типун установка в глобальных сайте-пакетов, а не виртуальное окружение



используя pip, чтобы установить пакет в виртуальное окружение вызывает упаковке должны быть установлены в глобальном сайта-пакеты папки вместо одной в папке виртуальное окружение. Вот как я настроил Python3 и virtualenv на OS X Mavericks (10.9.1):



Я установил python3 с помощью Homebrew:



ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
brew install python3 --with-brewed-openssl


изменил $PATH переменной .файл; добавлена следующая строка:



export PATH=/usr/local/bin:$PATH


под управлением which python3 возвращает /usr/local/bin/python3 (после перезагрузки оболочка.)



Примечание: which python3 по-прежнему возвращает /usr/bin/python хотя.



установлен virtualenv с помощью pip3:



pip3 install virtualenv


затем создайте новый virtualenv и активируйте его:



virtualenv testpy3 -p python3
cd testpy3
source bin/activate


Примечание: если я не укажу-P python3, pip будет отсутствовать в папке bin в virtualenv.



под управлением which pip и which pip3 оба возвращают папку virtualenv:



/Users/kristof/VirtualEnvs/testpy3/bin/pip3


теперь, когда я пытаюсь установить, например, уценки, используя PIP в виртуальное окружение активирована, типун будут установлены на глобальном сайте-пакетов каталог сайта-пакеты папки виртуальное окружение.



pip install markdown


под управлением pip list возвращает:



Markdown (2.3.1)
pip (1.4.1)
setuptools (2.0.1)
virtualenv (1.11)


содержание /Users/kristof/VirtualEnvs/testpy3/lib/python3.3/site-packages:



__pycache__/
_markerlib/
easy_install.py
pip/
pip-1.5.dist-info/
pkg_resources.py
setuptools/
setuptools-2.0.2.dist-info/


содержание /usr/local/lib/python3.3/site-packages:



Markdown-2.3.1-py3.3.egg-info/
__pycache__/
easy-install.pth
markdown/
pip-1.4.1-py3.3.egg/
setuptools-2.0.1-py3.3.egg
setuptools.pth
virtualenv-1.11-py3.3.egg-info/
virtualenv.py
virtualenv_support/


как вы можете видеть,глобальные папка site-packages содержит Markdown, папка virtualenv-нет.



Примечание.: У меня были Python2 и Python3, установленные ранее на другой виртуальной машине (далее эти инструкции) и имел ту же проблему с Python3; установка пакетов в python2 на основе virtualenv работала безупречно, хотя.



любые советы, подсказки, ... были бы очень признательны.

709   20  

20 ответов:

забавно, что вы подняли эту тему, у меня была точно такая же проблема. В конце концов я решил это, но я все еще не уверен, что вызвало это.

проверьте bin/pip и bin/activate скрипты. В bin/pip, посмотрите на shebang. Это правильно? Если нет, исправьте. Тогда на линии ~42 в своем bin/activate, проверьте, если ваш путь virtualenv является правильным. Это будет выглядеть примерно так

VIRTUAL_ENV="/Users/me/path/to/virtual/environment"

если это неправильно, поправьте его, deactivate, потом . bin/activate, и если наше взаимное проблема имела ту же причину, она должна работать. Если это все еще не так, вы на правильном пути, в любом случае. Я прошел через ту же процедуру решения проблем, что и вы,which piping снова и снова, следуя трассировке стека и т. д.

убедитесь, что

/Users/kristof/VirtualEnvs/testpy3/bin/pip3

это то, что вы хотите, а не ссылаясь на другой аналогично названный тестовый проект (у меня была эта проблема, и я понятия не имею, как это началось. Мои подозрения выполняется несколько virtualenvs в то же время.)

если ничего из этого не работает, временное решение может быть, как сказал Джо Холлоуэй,

просто запустите pip virtualenv с полным путем (т. е. не полагайтесь на поиск исполняемого пути), и вам даже не нужно активировать среду. Он будет делать правильные вещи.

возможно, не идеально, но он должен работать в крайнем случае.

ссылка на мой оригинальный вопрос:

VirtualEnv / Pip пытается установите пакеты глобально

для меня это не было проблемой pip или virtualenv. Это была проблема питона. Я установил свой $PYTHONPATH вручную в~/.файл (или ~/.bashrc) после выполнения некоторых учебник онлайн. Этот вручную установленный $PYTHONPATH был доступен в virtualenv, поскольку это, вероятно, должно быть разрешено.

дополнительно add2virtualenv не добавлял мой путь проекта к моему $PYTHONPATH по какой-то причине в virtualenv.

просто некоторые пути разветвления для тех, кто все еще может застрять! Ура!

У меня была та же проблема, я решил ее, удалив каталог venv и воссоздав его!

deactivate (if venv is activated first deactivate it)
rm -rf venv
virtualenv -p python3 venv
. ENV/bin/activate
pip3 install -r requirements.txt

теперь все работает как шарм.

Я попал в ту же проблему при установке пакета python из virtualenv. Первопричина в моем случае была другой. Из virtualenv я был (по привычке на Ubuntu), делая:

sudo easy_install -Z <package>

это привело к тому, что bin/pip shebang был проигнорирован, и он использовал не virtualenv python корня для установки его в глобальные пакеты сайта. Поскольку у нас есть виртуальная среда, мы должны установить пакет без "sudo"

у меня тоже была эта проблема. Звоню pip install <package_name> с /bin каталог в моей виртуальной среде Python 3.3 на моем Mac Mavericks вызвал установку пакета Python в каталог глобальных пакетов сайта Python 2.7. И это несмотря на то, что мой путь начался с каталога, содержащего pip. Странный. На Центосе такого не бывает. Для меня решение было вызов pip3 вместо pip. Когда я установил Пип в виртуальной окружающая среда через ez_setup, три исполняемых файла " pip " были установлены в - pip,pip3 и pip3.3. Любопытно, что все три файла были точно такими же. Звоню pip3 install <package_name> вызвал правильную установку пакета Python в локальный каталог site-packages. Звоню pip С полным именем пути в виртуальную среду также работал правильно. Мне было бы интересно узнать, почему мой Mac не использует $PATH так, как я ожидал бы.

у меня была аналогичная проблема после обновления до pip==8.0.0. Пришлось прибегнуть к отладке pip, чтобы проследить плохой путь.

как оказалось, в моем каталоге профиля был файл конфигурации distutils с некоторыми пустыми значениями пути. Это приводило к тому, что все пакеты устанавливались в один и тот же корневой каталог вместо соответствующей виртуальной среды (в моем случае /lib/site-packages).

Я не уверен, как файл конфигурации попал туда или как он имел пустые значения, но он начался после обновления очко.

в случае, если кто-то еще наткнется на эту же проблему, просто удалите файл ~/.pydistutils.cfg (или удаление пустого пути конфигурации) Исправлена проблема в моей среде, потому что pip вернулся к распределенной конфигурации по умолчанию.

первое, что нужно проверить, это какое местоположение pip решает:

which pip

Если вы находитесь в virtualenv, вы ожидаете, что это даст вам что-то вроде:

/ path / to / virtualenv/. name_of_virtualenv/bin / pip

однако это может быть так, что это решение для вашей системы pip по какой-то причине. Например, вы можете увидеть это из вашего virtualenv (это плохо):

/ usr / local / bin/pip (или что-нибудь это не в вашем пути virtualenv).

чтобы решить эту проблему, проверьте свой pipconfig в:

~/.pipconf
~/.conf/pip
/etc/pip.conf

и убедитесь, что нет ничего, что принуждает ваш путь Python или ваш путь pip (это исправлено для меня).

затем попробуйте запустить новый терминал и перестроить virtualenv (удалить, а затем создать его снова)

наткнулся на тот же вопрос сегодня. Я просто переустановил pip глобально с sudo easy_install pip (OSX / Max), затем снова создал мой virtualenv с sudo virtualenv nameOfVEnv. Затем после активации нового virtualenv pip команда работала как и ожидалось.

Я не думаю, что я использовал sudo на первом создании virtualenv, и это, возможно, было причиной отсутствия доступа к pip из virtualenv я смог получить доступ к pip2 до этого исправления, хотя это было странно.

вот некоторые практики, которые могли бы избежать головной боли при использовании Виртуальных Сред:

  • создать папку для ваших проектов.
  • создать свой Virtualenv проекты внутри этой папки.
  • после активации среды вашего проекта, никогда не используйте "судоpip install package".
  • после окончания работы, всегда"отключить" ваш окружающая среда.
  • избегайте переименования папки проекта.


Для лучшего представления этой практики, вот моделирование:


создание папки для ваших проектов / сред

$ mkdir venv

создание среды

$ cd venv/ 

$ virtualenv google_drive
New python executable in google_drive/bin/python
Installing setuptools, pip...done.

активация среды

$ source google_drive/bin/activate

установка пакетов

(google_drive) $ pip install PyDrive
Downloading/unpacking PyDrive
Downloading PyDrive-1.3.1-py2-none-any.whl
...
...
...    
Successfully installed PyDrive PyYAML google-api-python-client oauth2client six uritemplate httplib2 pyasn1 rsa pyasn1-modules
Cleaning up...

пакета внутри окружающая среда

(google_drive) $ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
>>>  
>>> gdrive = pydrive.auth.GoogleAuth()
>>>

отключить окружающей среды

(google_drive) $ deactivate 

$ 

пакет не доступен за пределами окружающей среды

(google_drive) $ python
Python 2.7.6 (default, Oct 26 2016, 20:32:10) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pydrive.auth
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pydrive.auth
>>> 

Примечания:

почему нет суда?

Virtualenv создает для вас совершенно новую среду, определяя $PATH и некоторые другие переменные и настройки. Когда вы используете sudo pip install package, вы запускаете Virtualenv как root, спасаясь от целого среда, которая была создана, а затем, установив пакет на глобальный сайт-пакеты,, а не внутри папки проекта где у вас есть виртуальная среда, хотя вы активировали окружающей среды.

если вы переименуете папку вашего проекта (как указано в принятой ответ)...

...вам придется настроить некоторые переменные из некоторых файлов внутри bin каталог вашего проекта.

например:

бин / Пип, строка 1 (она бах)

bin / activate, строка 42 (VIRTUAL_ENV)

У меня была эта проблема. Оказалось, что в одном из имен моих папок было место, которое вызвало проблему. Я удалил пространство, удалил и восстановил с помощью venv, и все было хорошо.

эта проблема возникает при создании экземпляра virtualenv, а затем изменить имя родительской папки.

ни одно из вышеперечисленных решений не сработало для меня.

мой венв был активен. pip -V и which pip дал мне правильный путь virtualenv, но когда я pip install-ed пакеты с активированным венв, мой pip freeze оставалась пустой.

все переменные окружения тоже были правильными.

наконец, я просто изменил pip и удалил virtualenv:

easy_install pip==7.0.2

pip install pip==10

sudo pip uninstall virtualenv

переустановить venv:

sudo pip install virtualenv

создать venv:

python -m virtualenv venv_name_here

и все пакеты правильно установлен в мой венв снова.

у меня тоже эта проблема. Звоню sudo pip install вызвал установку пакетов Python на глобальном сайте-пакеты diretory и вызов pip install просто нормально работал. Так что бесполезно судо в virtualenv.

та же проблема. Python3. 5 и pip 8.0.2 установлены из Linux rpm ' s.

я не нашел первопричины и не могу дать правильный ответ. Похоже, есть несколько возможных причин.

тем не менее, я надеюсь, что смогу помочь с разделением моего наблюдения и обходного пути.

  1. pyvenv С --system-site-packages

    • ./bin не содержит pip,pip доступно с сайта системы пакеты
    • пакеты устанавливаются глобально (ошибка?)
  2. pyvenv без --system-site-packages

    • pip устанавливается в ./bin, но это другая версия (от ensurepip)
    • пакеты устанавливаются в виртуальной среде (ОК)

очевидный обходной путь для pyvenv С --system-site-packages:

  • создать это без --system-site-packages опции
  • изменить include-system-site-packages = false до true на pyvenv.cfg file

также стоит проверить, что вы не изменили каким-то образом путь к вашему virtualenv.

в этом случае первая строка bin/pip (и остальные исполняемые файлы) будет иметь неправильный путь.

вы можете либо отредактировать эти файлы и исправить путь, либо удалить и снова установить virtualenv.

для Python 3ers

попробуйте обновить. У меня была точно такая же проблема, и я попытался ответить Чейзу, но безуспешно. Самый быстрый способ рефакторинга - это обновить версию Python Minor / Patch, если это возможно. Я заметил, что я бежал 3.5.1 и 3.5.2 обновление для. Пывеньв еще раз работает.

Это случилось со мной, когда я создал virtualenv в неправильном месте. Затем я подумал, что могу переместить dir в другое место, не имея значения. Это имело значение.

mkdir ~/projects
virtualenv myenv
cd myenv
git clone [my repository]

Вот дерьмо, я забыл cd в projects перед созданием virtualenv и клонированием rep. Oh хорошо, я слишком ленив, чтобы уничтожить и воссоздать. Я просто перенесу реж без проблем.

cd ~
mv myenv projects
cd projects/myenv/myrepo
pip install -r requirements

нет, хочет больше разрешений, что за? Я думал, что это странно, но судо далеко! Это тогда установил пакеты в глобальное расположение.

урок, который я узнал, был, просто удалите virtualenv dir. Не двигай его.

была эта проблема после установки Divio: он изменил мой путь или среду каким-то образом, как он запускает терминал.

решение в этом случае было просто сделать source ~/.bash_profile который уже должен быть настроен, чтобы вернуть вас в исходное состояние pyenv/pyenv-virtualenv.

Почему-то подстава.cfg файл с префиксом="" в папке проекта

запуск pip install на virtualenv вне папки porject работал так, что изнутри он говорил pip использовать пустой префикс, который по умолчанию равен "/"

удаление файла исправлено

это случилось со мной, когда я установил virtualenv с --python=python3.6 флаг, но потом попытался использовать pip2 install.
Создание virtualenv с флагом версии, которую вы будете использовать, решает проблемы с разрешениями. Чтобы проверить, попробуйте which pip или which pip2 или which pip3 (зависит от вашего выбора). Если таковые имеются pip вы используете показывает путь не venv вот ваша проблема.

Comments

    Ничего не найдено.