Zdecydowanie sugeruję unikanie pip3
instalowania rzeczy w pakietach witryn systemu. Przedstawiłem już te argumenty, ale dam wam notatki:
- Aktualizacje systemu psują wszystko
- Instalowanie pakietów apt może nadpisywać rzeczy instalowane przez pip
- Konflikty wersji
- Ulepszenia dystrybucji są nieprzewidywalnym chaosem . Poważnie. Straciłem do nich włosy.
Zdecydowanie zalecałbym używanie virtualenv
. Gdziekolwiek się wybierasz, to ogromny ból, ale po skonfigurowaniu masz pełne środowisko Python pod pełną kontrolą. To oznacza więcej pracy (będziesz musiał sprawdzić rzeczy pod kątem aktualizacji ipip
nie pomaga), ale nie musisz się martwić tym, co robi Ubuntu.
Mam środowisko dla każdej witryny (po prostu siedzi w podkatalogu o nazwie venv
). Niektóre osoby - w tym ja, dawno temu - wolą udostępniać swoje środowiska między wieloma witrynami. Uznałem, że jest to łatwiejsze w utrzymaniu, jeśli chodzi o wydawanie aktualizacji, ale niektóre witryny mogą być niestabilne lub wymagać starych wersji, co powstrzymuje całe środowisko. YMMV.
Jeśli chodzi o instalację tego, i po prostu uderzenie mnie w twarz, virtualenv
nie jest jeszcze zapakowany dla Python 3, więc musimy użyć 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!
Twój bash PS1 powinien być teraz zapełniony, (myenv)
abyś wiedział, że jesteś w innym środowisku. Możemy przetestować środowisko, aby sprawdzić, czy korzystamy z odpowiednich wersji rzeczy (nie używamy wersji systemowych na początek):
$ python --version
Python 3.3.2+
$ which python pip
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
A potem możesz kontynuować, jakbyś był panem wszechświata. Nie musisz pip
już używać roota i nie musisz go określać pip3
. Jest o wiele bardziej przyjazny.
$ pip install django umemcache
...
Jeśli używasz czegoś takiego uwsgi
do hostowania tego (powinieneś) użyj jego flagi -H (lub argumentu home config), aby powiedzieć mu, gdzie mieszka środowisko Python.
Jeśli chodzi o ułatwienie programowania, możesz automatycznie „zamontować” swoje virtualenv
środowisko. Istnieje wiele skryptów, ale ten jest mój (ten mieszka na dole mojego ~/.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 .
Ilekroć wchodzę cd
do /web
(gdzie przechowywane są wszystkie moje witryny programistyczne), instaluje dla mnie virtualenv. Pamiętaj, że mam tylko jedno środowisko dla wszystkich moich witryn, więc będzie to pasowało tylko, jeśli zrobisz coś podobnego. Istnieje wiele innych sposobów robienia podobnych rzeczy .