Я настійно пропоную уникати 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!
Ваш баш 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 (або аргумент домашнього конфігурації), щоб повідомити, де живе середовище 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. Зауважте, що у мене є лише одне середовище для всіх моїх сайтів, тому це підійде лише вам, якщо ви зробите щось подібне. Існує багато інших способів зробити подібні речі .