Ich würde dringend empfehlen, pip3
die Installation in den Site-Paketen des Systems zu vermeiden . Ich habe diese Argumente schon einmal vorgebracht, aber ich gebe Ihnen die Notizen:
- System-Updates machen alles kaputt
- Das Installieren von apt-Paketen kann von Pip installierte Dinge überschreiben
- Versionskonflikte
- Distributions-Upgrades sind ein unvorhersehbares Chaos . Ernst. Ich habe Haare an diese verloren.
Ich würde die Verwendung von nachdrücklich befürworten virtualenv
. Es ist eine große Herausforderung, wo immer Sie hingehen müssen, aber sobald Sie es eingerichtet haben, haben Sie eine vollständige Python-Umgebung unter Ihrer Kontrolle. Dies bedeutet mehr Arbeit (Sie müssen die Dinge auf Updates überprüfen und pip
helfen dort noch nicht wirklich), aber Sie müssen sich keine Gedanken darüber machen, was Ubuntu tut.
Ich habe eine Umgebung für jeden Standort (nur in einem Unterverzeichnis namens sitzen venv
). Einige Leute - auch ich - ziehen es vor, ihre Umgebung für mehrere Standorte freizugeben. Ich fand es einfacher, dies im Hinblick auf die Herausgabe von Updates zu pflegen, aber einige Sites können anfällig sein oder alte Versionen erfordern, was die gesamte Umgebung zurückhält. YMMV.
In Bezug auf die Installation und nur um mir ins Gesicht zu schlagen, virtualenv
ist es noch nicht für Python 3 gepackt, daher müssen wir Folgendes verwenden 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!
Ihre Bash-PS1 sollte jetzt mit einem Vorprogramm versehen sein (myenv)
, damit Sie wissen, dass Sie sich in einer anderen Umgebung befinden. Wir können die Umgebung testen, um zu überprüfen, ob wir die richtigen Versionen der Dinge haben (ohne die Systemversionen für den Anfang zu verwenden):
$ python --version
Python 3.3.2+
$ which python pip
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
Und dann kannst du einfach so weitermachen, als ob du der Meister des Universums wärst. Sie brauchen kein root pip
mehr, um es zu benutzen, und Sie müssen es nicht spezifizieren pip3
. Es ist einfach viel freundlicher.
$ pip install django umemcache
...
Wenn Sie so etwas wie uwsgi
Hosting verwenden, sollten Sie das Flag -H (oder das Argument home config) verwenden, um anzugeben, wo sich die Python-Umgebung befindet.
Um die Entwicklung zu vereinfachen, können Sie Ihre virtualenv
Umgebung automatisch "mounten" . Es gibt viele Skripte da draußen, aber dieses ist meins (das steht ganz unten in meinem ~/.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 .
Wann immer ich cd
in /web
(wo alle meine Entwicklungs-Websites gespeichert sind), wird die virtuelle Umgebung für mich aktiviert. Beachten Sie, dass ich nur eine Umgebung für alle meine Websites habe, sodass dies nur für Sie geeignet ist, wenn Sie etwas Ähnliches tun. Es gibt viele andere Möglichkeiten, ähnliche Dinge zu tun .