типун установка в глобальных сайте-пакетов, а не виртуальное окружение
используя 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 работала безупречно, хотя.
любые советы, подсказки, ... были бы очень признательны.
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 с полным путем (т. е. не полагайтесь на поиск исполняемого пути), и вам даже не нужно активировать среду. Он будет делать правильные вещи.
возможно, не идеально, но он должен работать в крайнем случае.
ссылка на мой оригинальный вопрос:
для меня это не было проблемой 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. Затем после активации нового virtualenvpipкоманда работала как и ожидалось.Я не думаю, что я использовал
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, и все было хорошо.
ни одно из вышеперечисленных решений не сработало для меня.
мой венв был активен.
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.я не нашел первопричины и не могу дать правильный ответ. Похоже, есть несколько возможных причин.
тем не менее, я надеюсь, что смогу помочь с разделением моего наблюдения и обходного пути.
pyvenvС--system-site-packages
./binне содержитpip,pipдоступно с сайта системы пакеты- пакеты устанавливаются глобально (ошибка?)
pyvenvбез--system-site-packages
pipустанавливается в./bin, но это другая версия (отensurepip)- пакеты устанавливаются в виртуальной среде (ОК)
очевидный обходной путь для
pyvenvС--system-site-packages:
- создать это без
--system-site-packagesопции- изменить
include-system-site-packages = falseдоtrueнаpyvenv.cfgfile
также стоит проверить, что вы не изменили каким-то образом путь к вашему 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