Короткий вопрос
- Что такое правильный способ установки
pip
,virtualenv
иdistribute
?
Задний план
В моем ответе на вопрос 4314376 SO я рекомендовал использовать его, ez_setup
чтобы вы могли установить его, pip
и выполните virtualenv
следующие действия:
curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install pip
sudo pip install virtualenv
Первоначально я взял эти инструкции из поста Джесси Ноллера в блоге. Итак, вы хотите использовать Python на Mac? , Мне нравится идея сохранения чистой глобальной директории site-packages, поэтому единственные другие пакеты, которые я устанавливаю, есть virtualenvwrapper
и distribute
. (Я недавно добавил distribute
к своему набору инструментов из-за этого публичного объявления Python . Чтобы установить эти два пакета, я использовал:
sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
Нет больше setuptools и easy_install
Чтобы действительно следовать этому объявлению Python для публичной службы при новой установке Python, я бы сделал следующее:
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper
Упрек Глифа
В комментарии к моему ответу на вопрос 4314376 SO пользователь Glyph заявил:
NO. НИКОГДА не делай
sudo python setup.py install
что- нибудь . Напишите ~ / .pydistutils.cfg, который помещает вашу установку pip в ~ / .local или что-то в этом роде. Особенно названные файлыez_setup.py
имеют тенденцию высасывать более новые версии таких вещей, как setuptools и easy_install, которые потенциально могут сломать другие компоненты вашей операционной системы.
Вернуться к короткому вопросу
Таким образом , ответ Глифа приводит меня к моему первоначальному вопросу:
- Что такое правильный способ установки
pip
,virtualenv
иdistribute
?
источник
python distribute_setup.py
следуетeasy_install pip
иvirtualenv --distribute venv
? (см. python-guide.readthedocs.org/en/latest/starting/install/… ), и если да, то почему?sudo apt-get install python-{pip,virtualenv}
???pip
,virtualenv
и Python PSA.http://python-distribute.org/distribute_setup.py
перенаправляет на 404 :(Ответы:
Вы можете сделать это, не устанавливая ничего в сам Python.
Вам не нужны sudo или какие-либо привилегии.
Вам не нужно редактировать какие-либо файлы.
Установите virtualenv в виртуальную среду начальной загрузки. Используйте эту виртуальную среду, чтобы создать больше. Поскольку virtualenv поставляется с pip и дистрибутивом, вы получаете все за одну установку.
Вот пример в bash:
Теперь вы можете использовать свою среду начальной загрузки, чтобы создать больше:
Сходить с ума!
Заметка
Это предполагает, что вы не используете действительно старую версию virtualenv. Старые версии требовали флагов
--no-site-packges
(и в зависимости от версии Python--distribute
). Теперь вы можете создать свою среду начальной загрузки с помощью простоpython virtualenv.py path-to-bootstrap
илиpython3 virtualenv.py path-to-bootstrap
.источник
python virtualenv.py TARGET_DIRECTORY
делает то же самое.virtualenv
не нужны опции --no-site-packages --distribute. Противоположное--system-site-packages
может потребоватьсяcurl -Lo virtualenv-tmp.tar.gz 'https://github.com/pypa/virtualenv/tarball/master'
virtualenvwrapper
? Документы предупреждают специально, чтобы не устанавливать его в virtualenv (хотя, похоже, это работает ).Я думаю, что Glyph означает сделать что-то вроде этого:
~/.local
, если он еще не существует.~/.bashrc
, убедитесь , что~/.local/bin
наPATH
и~/.local
наPYTHONPATH
.Создайте файл,
~/.pydistutils.cfg
который содержитЭто стандартный файл формата ConfigParser.
Скачать
distribute_setup.py
и запуститьpython distribute_setup.py
(нетsudo
). Если он жалуется на несуществующийsite-packages
каталог, создайте его вручную:mkdir -p ~ / .local / lib / python2.7 / site-packages /
Запустите,
which easy_install
чтобы убедиться, что это исходит от~/.local/bin
pip install virtualenv
pip install virtualenvwrapper
~/.virtualenvs
В
~/.bashrc
добавленииВот и все, никакой пользы нет,
sudo
и ваша среда Python~/.local
полностью отделена от Python операционной системы. Отказ от ответственности: Не уверен, насколько совместимvirtualenvwrapper
в этом сценарии - я не мог проверить это на моей системе :-)источник
easy_install pip
между шагом 5 и 6.Если вы выполните действия, описанные в нескольких уроках, которые я привел в этом ответе , вы можете получить желаемый эффект без каких-либо сложных «ручных» шагов в ответах Уокера и Винай. Если вы на Ubuntu:
Эквивалент достигается в OS X с помощью homebrew для установки python (более подробно здесь ).
С
pip
установленным, вы можете использовать его для получения остальных пакетов (вы можете опуститьsudo
в OS X, так как вы используете локальную установку Python).(это единственные пакеты, которые вам нужно установить в глобальном масштабе, и я сомневаюсь, что они будут конфликтовать с любым системным уровнем ОС. Если вы хотите быть супер-безопасным, вы можете сохранить версии дистрибутива
sudo apt-get install virtualenvwrapper
)Примечание: в Ubuntu 14.04 я получаю некоторые ошибки при установке pip , поэтому я использую
pip3 install virtualenv virtualenvwrapper
и добавляюVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
в свой.bashrc/.zshrc
файл.Затем вы добавляете в свой
.bashrc
файли источник его
Это в основном это. Теперь единственное решение - хотите ли вы создать virtualenv для включения пакетов системного уровня
там, где существующие системные пакеты не нужно переустанавливать, они символически связаны с версиями системного интерпретатора. Примечание: вы все еще можете устанавливать новые пакеты и обновлять существующие включенные из системы пакеты без sudo - я протестировал его, и он работает без сбоев системного интерпретатора.
Альтернативой, если вы хотите полностью отделенную среду, является
или учитывая, что это опция по умолчанию, просто
В результате у вас есть новый virtualenv, где вы можете свободно и без лишних усилий устанавливать ваши любимые пакеты.
источник
export WORKON_HOME="$HOME/.virtualenvs"
?brew install python
включает pip + setuptools). Этот подход прекрасно работает для меня. Кроме того, сосредоточение на pip, похоже, станет будущим путем в упаковке Python.WORKON_HOME
по умолчанию~/.virtualenvs
да. В/usr/local/bin/virtualenvwrapper.sh
этих наборах есть строчкаworkon_home_dir="$HOME/.virtualenvs"
if [ "$workon_home_dir" = "" ]
.pip install virtualenv virtualenv-wrapper
линиейpip install --upgrade distribute
в активированном virtualenv, в который я затем установил pyopencl. Я также добавилexport PROJECT_HOME="$HOME/src"
в свой bashrc, чтобы активировать классныйmkproject
инструмент venv.Python 3.4 и выше
Python 3.3 добавляет модуль venv , а Python 3.4 добавляет модуль surepip . Это делает загрузочный пункт таким же простым, как:
Возможно, предшествует призыв
venv
сделать это в виртуальной среде.Гарантированный пункт описан в PEP 453 .
источник
На Ubuntu:
sudo apt-get install python-virtualenv
Пакет
python-pip
является зависимым, поэтому он также будет установлен.источник
pip
, желательно вvirtualenv
, и никогда не использоватьsudo
ни для чегоpip
иногда имеют значительные ошибки, поэтому я часто заканчиваю тем, что используюget-pip.py
предоставленный на python.org.Я сделал эту процедуру для нас, чтобы использовать на работе.
Ключевые моменты для безопасности единомышленников:
источник
Обновление: с июля 2013 года этот проект больше не поддерживается. Автор предлагает использовать pyenv . (У pyenv нет встроенной поддержки virtualenv, но с этим приятно.)
Pythonbrew - менеджер версий для python и поставляется с поддержкой virtualenv.
После установки pythonbrew и python-версии использовать venvs очень просто:
источник
pyenv
, что работает хорошо.Нет проблем выполнить установку sudo python setup.py, если вы уверены, что это именно то, что вы хотите сделать.
Разница в том, что он будет использовать каталог site-packages вашей ОС в качестве места назначения для файлов .py, которые будут скопированы.
так что, если вы хотите, чтобы pip был доступен для всех пользователей, это, вероятно, правильный путь. Я не говорю, что другие пути плохи, но это, вероятно, достаточно справедливо.
источник
pip freeze
меня в тупик - список пакетов, устанавливаемых во всей системе, был слишком длинным. С тех пор я настоятельно рекомендую использовать установку пакетов "no sudo" и "no os-wide" для python.Установите ActivePython . Включает в себя pip, virtualenv и Distribute.
источник
Я недавно столкнулся с той же проблемой. Я становлюсь более неравнодушным к мышлению «всегда используй virtualenv», поэтому моя проблема заключалась в том, чтобы установить virtualenv с помощью pip, не устанавливая дистрибутив в мою глобальную или пользовательскую директорию site-packages. Для этого я вручную загрузил дистрибутив, pip и virtualenv, и для каждого из них я запустил «python setup.py install --prefix ~ / .local / python-private» (с временной настройкой PYTHONPATH = ~ / .local / python-private), чтобы установочные скрипты могли найти распространение). Я переместил скрипт virtualenv в другой каталог, который у меня есть в моем PATH, и отредактировал его, чтобы модули распространять и virtualenv можно было найти в sys.path. Тада: Я ничего не устанавливал в каталог / usr, / usr / local или мой пользовательский пакет сайтов, но я могу запустить virtualenv где угодно, и в этом virtualenv я получаю pip.
источник
У меня были различные проблемы (см. Ниже) при установке обновленных модулей SSL, даже внутри virtualenv, поверх более старых версий Python для ОС, поэтому я сейчас использую
pyenv
.pyenv позволяет очень легко устанавливать новые версии Python и поддерживает virtualenvs. Начать гораздо проще, чем рецепты virtualenv, перечисленные в других ответах:
brew install pyenv
и на Linux используйте pyenv-installerЭто очень хорошо работает для изоляции "новой версии Python" и virtualenv от системы Python. Поскольку вы можете легко использовать более позднюю версию Python (публикация 2.7.9), модули SSL уже обновлены, и, конечно, как и любая современная установка virtualenv, вы изолированы от системных модулей Python.
Пара хороших уроков:
pyenv global 3.6.1
(глобально для текущего пользователя) илиpyenv local 2.7.13
(локально до текущего каталога).pyenv-virtualenv
Плагин теперь встроен в - типpyenv commands | grep virtualenv
проверки. Я бы не стал использовать плагин pyenv-virtualenvwrapper для начала - посмотрите, как вы попадаете с pyenv-virtualenv, который более интегрирован в pyenv, поскольку он охватывает большую часть того, что делает virtualenvwrapper.pyenv
смоделированrbenv
(хороший инструмент для переключения версий Ruby) и его единственной зависимостью является bash.pyvenv
- это виртуальный эквивалент, который является частью последних версий Python 3, и не обрабатывает переключение версий PythonПредостережения
Два предупреждения о pyenv:
dash
, который есть/bin/sh
в Ubuntu или Debian.bash --login
с использованием терминала), чего не всегда легко достичь с помощью таких инструментов автоматизации , как Ansible .Следовательно, pyenv лучше всего подходит для интерактивного использования и менее хорош для серверов сценариев.
Проблемы с модулем SSL
Одной из причин использования
pyenv
является то, что часто возникают проблемы с обновлением модулей Python SSL при использовании более старых системных версий Python:источник
Вы можете сделать это, не устанавливая ничего в сам Python.
Вам не нужны sudo или какие-либо привилегии.
Вам не нужно искать последнюю версию
virtualenv
файла tarВам не нужно редактировать информацию о версии в bash-скрипте, чтобы поддерживать актуальность.
Вам не нужно
curl
/wget
илиtar
установлено,pip
илиeasy_install
это работает для 2.7, а также для 3.X
Сохраните следующее для
/tmp/initvenv.py
:из будущего импорта print_function
и использовать его как
например (если вам действительно нужен уровень
distribute
совместимости дляsetuptools
)Обратите внимание, что в старых версиях Python это может дать вам
InsecurePlatformWarning
s¹.Если у вас есть свой virtualenv (например, имя
venv
), вы можете настроить другой virtualenv с помощьюvirtualenv
только что установленного:virtualenvwrapper
Я также рекомендую взглянуть на virtualenvwrapper после однократной настройки:
и активация (можно сделать из скрипта входа в систему):
Вы можете делать такие вещи, как:
¹ Я не нашел способ подавить предупреждение. Это может быть решено в
pip
и / илиrequest
, но разработчики указывают друг на друга как на причину. Я получил (часто нереалистичную) рекомендацию обновить версию Python, которую я использовал, до последней версии. Я уверен, что это сломает, например, мою установку Linux Mint 17. К счастью,pip
пакеты кэшируются, поэтому предупреждение делается только один раз за установку пакета.источник
InsecurePlatformWarning
(т.е. предупреждение, если Python старше версии 2.7.9) можно исправить, установив дополнительные пакеты pyopenssl, pyasn1, ndg-httpsclient из PyPI. (Это поддержка SSL, декодирование сертификатов, https через PyOpenSSL.) Без правильных протоколов это действительно недостаточно безопасно для загрузки и запуска любого кода.На официальном сайте Virtualenv есть хорошие инструкции. https://pypi.python.org/pypi/virtualenv
В основном то, что я сделал, это установить
pip
с помощьюsudo easy_install pip
, затем использовать,sudo pip install virtualenv
затем создать среду с:virtualenv my_env
(назовите это как хотите), следуя тому, что я сделалvirtualenv --distribute my_env
:; который установленdistribute
иpip
в моем virtualenv.Снова следуйте инструкциям на
virtualenv
странице.Что-то вроде хлопот, исходящих от Ruby; P
источник
Вот хороший способ установить virtualenvwrapper (обновление этого ).
Скачайте virtualenv-1.11.4 (вы можете найти последнюю версию здесь ), распакуйте его, откройте
terminal
Вот и все, теперь вы можете использовать
mkvirtualenv env1
, и т.lsvirtualenv
Д.Примечание: вы можете удалить
virtualenv-1.11.4
иvirtualenv-1.11.4.zip
из папки загрузок.источник
Хорошая новость - если вы установили python3.4, pyvenv уже установлен. Итак, просто
Теперь в этом виртуальном окружении вы можете использовать pip для установки модулей для этого проекта.
Оставьте это виртуальное окружение, просто
источник