Я настоятельно рекомендую избегать pip3
установки вещей в системные пакеты сайта. Я приводил эти аргументы раньше, но я дам вам заметки:
- Обновления системы ломают все
- Установка пакетов apt может перезаписать вещи, установленные в pip
- Конфликт версий
- Модернизация дистрибутива - это непредсказуемый хаос . Шутки в сторону. Я потерял волосы к ним.
Я настоятельно рекомендую использовать virtualenv
. Это огромная боль в том, чтобы начать работу, но как только вы ее настроите, у вас будет полная среда Python под вашим полным контролем. Это означает больше работы (вам придется проверять наличие обновлений, pip
но пока вам это не поможет), но вам не нужно беспокоиться о том, что делает Ubuntu.
У меня есть среда для каждого сайта (просто сидя в подкаталоге называется venv
). Некоторые люди, включая меня, когда-то давно, предпочитают делить свою среду между несколькими сайтами. Я обнаружил, что это проще поддерживать с точки зрения выпуска обновлений, но некоторые сайты могут быть хрупкими или требовать старых версий, и это сдерживает всю среду. YMMV.
С точки зрения установки этого, и просто чтобы дать мне пощечину, virtualenv
еще не упакован для Python 3, поэтому мы должны использовать pip3
:
$ sudo pip3 install virtualenv
...
$ virtualenv-3.3 myenv
Using base prefix '/usr'
New python executable in myenv/bin/python3
Also creating executable in myenv/bin/python
Installing setuptools, pip...done.
$ source myenv/bin/activate # This is important!
Теперь вашему bash PS1 нужно предварять, (myenv)
чтобы вы знали, что находитесь в другой среде. Мы можем протестировать среду, чтобы убедиться, что мы находимся на правильных версиях вещей (не используя системные версии для начинающих):
$ python --version
Python 3.3.2+
$ which python pip
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
И тогда вы можете просто продолжать, как если бы вы были хозяином вселенной. Вам больше не нужен root pip
, и вам не нужно указывать pip3
. Это намного более дружелюбно.
$ pip install django umemcache
...
Если вы используете что-то подобное uwsgi
для размещения этого (вы должны), используйте его флаг -H (или аргумент home config), чтобы сообщить ему, где находится среда Python.
Что касается упрощения разработки, вы можете автоматически «монтировать» свою virtualenv
среду. Есть много сценариев, но этот мой (он живет внизу моего ~/.bashrc
:
export VENVDIR="/web"
export VENVDIR_VENV="$VENVDIR/venv"
venvcd() {
wd=$(pwd)
[[ $wd == $VENVDIR/* || $wd == $VENVDIR ]] && wasin=true || unset wasin
builtin cd "$@"
wd=$(pwd)
if [[ $wd == $VENVDIR/* || $wd == $VENVDIR ]]; then
source $VENVDIR_VENV/bin/activate
else
[ $wasin ] && deactivate
fi
}
alias cd="venvcd"
cd .
Всякий раз, когда я вхожу cd
в /web
(где хранятся все мои веб-сайты разработки), он устанавливает для меня virtualenv. Обратите внимание, что у меня есть только одна среда для всех моих сайтов, поэтому она подойдет вам только в том случае, если вы делаете что-то подобное. Есть много других способов сделать подобные вещи .