Kurze Frage
- Was ist die richtige Art und Weise zu installieren
pip
,virtualenv
unddistribute
?
Hintergrund
In meiner Antwort auf Frage SO 4314376 , empfahl ich mit , ez_setup
so dass Sie dann installieren könnte pip
und virtualenv
wie folgt dar :
curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install pip
sudo pip install virtualenv
Ich habe diese Anleitung ursprünglich aus Jesse Nollers Blog-Post gezogen. Möchten Sie Python auf dem Mac verwenden? . Ich mag die Idee, ein sauberes globales Site-Packages-Verzeichnis zu führen, daher sind virtualenvwrapper
und die einzigen anderen Pakete, die ich dort installiere distribute
. (Ich habe vor kurzem distribute
aufgrund dieser Ankündigung des öffentlichen Python-Dienstes zu meiner Toolbox hinzugefügt . Um diese beiden Pakete zu installieren, habe ich Folgendes verwendet:
sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
Keine setuptools und easy_install mehr
Um dieser Ankündigung des öffentlichen Python-Dienstes bei einer neuen Python-Installation wirklich zu folgen , würde ich Folgendes tun:
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
Glyphs Rüge
In einem Kommentar zu meiner Antwort auf die SO-Frage 4314376 erklärte der SO-Benutzer Glyph :
NEIN. Mach NIEMALS was auch
sudo python setup.py install
immer. Schreiben Sie eine ~ / .pydistutils.cfg, die Ihre Pip-Installation in ~ / .local oder so versetzt. Insbesondere die genannten Dateienez_setup.py
neigen dazu, neuere Versionen von Dingen wie setuptools und easy_install herunterzusaugen, wodurch möglicherweise andere Dinge auf Ihrem Betriebssystem beschädigt werden.
Zurück zur kurzen Frage
So Glyph Antwort führt mich zu meiner ursprünglichen Frage:
- Was ist die richtige Art und Weise zu installieren
pip
,virtualenv
unddistribute
?
quelle
python distribute_setup.py
gefolgt voneasy_install pip
undvirtualenv --distribute venv
? (siehe python-guide.readthedocs.org/en/latest/starting/install/… ) und wenn ja, warum?sudo apt-get install python-{pip,virtualenv}
???pip
,virtualenv
und der Python PSA.http://python-distribute.org/distribute_setup.py
Weiterleitungen zu 404 :(Antworten:
Sie können dies tun, ohne etwas in Python selbst zu installieren .
Sie benötigen weder Sudo noch Privilegien.
Sie müssen keine Dateien bearbeiten.
Installieren Sie virtualenv in einer virtuellen Bootstrap-Umgebung. Verwenden Sie diese virtuelle Umgebung, um mehr zu erstellen. Da virtualenv mit pip and Distribute ausgeliefert wird, erhalten Sie alles aus einer Installation.
Hier ist ein Beispiel in Bash:
Jetzt können Sie Ihre "Bootstrap" -Umgebung verwenden, um mehr zu erstellen:
Verrückt werden!
Hinweis
Dies setzt voraus, dass Sie keine wirklich alte Version von virtualenv verwenden. Alte Versionen erforderten die Flags
--no-site-packges
(und abhängig von der Version von Python--distribute
). Jetzt können Sie Ihre Bootstrap-Umgebung mit justpython virtualenv.py path-to-bootstrap
oder erstellenpython3 virtualenv.py path-to-bootstrap
.quelle
python virtualenv.py TARGET_DIRECTORY
das gleiche tut.virtualenv
Derzeit sind keine Optionen für '--no-site-packages --distribute' erforderlich. Das Gegenteil--system-site-packages
könnte erforderlich seincurl -Lo virtualenv-tmp.tar.gz 'https://github.com/pypa/virtualenv/tarball/master'
virtualenvwrapper
? Die Dokumente warnen ausdrücklich davor, es in einer virtuellen Umgebung zu installieren (obwohl es zu funktionieren scheint ).Ich denke, Glyphe bedeutet so etwas zu tun:
~/.local
, falls es noch nicht vorhanden ist.~/.bashrc
sicher , dass~/.local/bin
aufPATH
und~/.local
ist aufPYTHONPATH
.Erstellen Sie eine Datei,
~/.pydistutils.cfg
die enthältEs ist eine Standarddatei im ConfigParser-Format.
Herunterladen
distribute_setup.py
und ausführenpython distribute_setup.py
(neinsudo
). Wenn es sich über ein nicht vorhandenessite-packages
Verzeichnis beschwert , erstellen Sie es manuell:mkdir -p ~ / .local / lib / python2.7 / site-packages /
Führen Sie aus
which easy_install
, um zu überprüfen, ob es von kommt~/.local/bin
pip install virtualenv
pip install virtualenvwrapper
~/.virtualenvs
Zusätzlich
~/.bashrc
hinzufügenDas war's, überhaupt keine Verwendung
sudo
und Ihre Python-Umgebung befindet sich in~/.local
, völlig getrennt von Python des Betriebssystems. Haftungsausschluss:virtualenvwrapper
Ich bin mir nicht sicher, wie kompatibel dieses Szenario ist - ich konnte es auf meinem System nicht testen :-)quelle
easy_install pip
zwischen Schritt 5 und 6 geben.Wenn Sie die Schritte befolgen, die in mehreren Tutorials beschrieben wurden, die ich in dieser Antwort verlinkt habe , können Sie den gewünschten Effekt erzielen, ohne die etwas komplizierten "manuellen" Schritte in den Antworten von Walker und Vinay. Wenn Sie auf Ubuntu sind:
Das Äquivalent wird in OS X durch die Verwendung von Homebrew zur Installation von Python erreicht (weitere Details hier ).
Mit
pip
installiert können Sie es verwenden, um die verbleibenden Pakete zu erhalten (Sie könnensudo
in OS X weglassen , da Sie Ihre lokale Python-Installation verwenden).(Dies sind die einzigen Pakete, die Sie global installieren müssen, und ich bezweifle, dass sie mit allen Systemen auf Betriebssystemebene des Betriebssystems in Konflikt geraten. Wenn Sie besonders sicher sein möchten, können Sie die Versionen der Distribution behalten.
sudo apt-get install virtualenvwrapper
)Hinweis: In Ubuntu 14.04 erhalte ich einige Fehler bei der Pip-Installation , daher verwende ich
pip3 install virtualenv virtualenvwrapper
und fügeVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
sie meiner.bashrc/.zshrc
Datei hinzu.Sie hängen dann an Ihre
.bashrc
Datei anund beschaffen
Das ist es im Grunde. Jetzt müssen Sie nur noch entscheiden, ob Sie eine virtuelle Umgebung erstellen möchten, die Pakete auf Systemebene enthält
Wenn Ihre vorhandenen Systempakete nicht neu installiert werden müssen, sind sie mit den Versionen des Systeminterpreters verknüpft. Hinweis: Sie können weiterhin neue Pakete installieren und vorhandene Pakete aus dem System ohne sudo aktualisieren. Ich habe es getestet und es funktioniert ohne Unterbrechungen des Systeminterpreters.
Die Alternative, wenn Sie eine vollständig getrennte Umgebung wünschen, ist
oder vorausgesetzt, dies ist einfach die Standardoption
Das Ergebnis ist, dass Sie eine neue virtuelle Umgebung haben, in der Sie Ihre Lieblingspakete frei und plötzlich installieren können
quelle
export WORKON_HOME="$HOME/.virtualenvs"
?brew install python
zieht Pip + Setuptools ein). Dieser Ansatz funktioniert gut für mich. Darüber hinaus scheint die Konzentration auf Pip auch der zukünftige Weg in der Python-Verpackung zu sein.WORKON_HOME
Standardmäßig~/.virtualenvs
ja. Es gibt eine Linie in/usr/local/bin/virtualenvwrapper.sh
diesen Setsworkon_home_dir="$HOME/.virtualenvs"
if [ "$workon_home_dir" = "" ]
.pip install virtualenv virtualenv-wrapper
Liniepip install --upgrade distribute
innerhalb der aktivierten virtuellen Umgebung zu verfolgen, in der ich dann pyopencl installiert habe. Ich habe auchexport PROJECT_HOME="$HOME/src"
meinen bashrc hinzugefügt , um das coolemkproject
venv-Tool zu aktivieren .Python 3.4 ab
Python 3.3 fügt das venv-Modul hinzu und Python 3.4 fügt das surepip-Modul hinzu . Dies macht das Bootstrapping von Pip so einfach wie:
Möglicherweise geht ein Aufruf dazu
venv
in einer virtuellen Umgebung voraus .Garantierte Pip ist in PEP 453 beschrieben .
quelle
Unter Ubuntu:
sudo apt-get install python-virtualenv
Das Paket
python-pip
ist eine Abhängigkeit, daher wird es auch installiert.quelle
pip
, vorzugsweise in einvirtualenv
und nie verwendensudo
entweder fürpip
weisen die vom Betriebssystem bereitgestellten Versionen von manchmal erhebliche Fehler auf, sodass ich häufig dieget-pip.py
auf python.org bereitgestellten Versionen verwende.Ich habe dieses Verfahren für uns bei der Arbeit erstellt.
Wichtige Punkte für Sicherheitsbewusste:
quelle
Update: Ab Juli 2013 wird dieses Projekt nicht mehr gepflegt. Der Autor schlägt vor, pyenv zu verwenden . (pyenv hat keine integrierte Unterstützung für virtualenv, spielt aber gut damit.)
Pythonbrew ist ein Versionsmanager für Python und bietet Unterstützung für virtualenv.
Nach der Installation von Pythonbrew und einer Python-Version mit venvs ist das ganz einfach:
quelle
pyenv
, was gut funktioniert.Es ist kein Problem, sudo python setup.py zu installieren, wenn Sie sicher sind, dass es das ist, was Sie tun möchten.
Der Unterschied besteht darin, dass das Site-Packages-Verzeichnis Ihres Betriebssystems als Ziel für das Kopieren von .py-Dateien verwendet wird.
Wenn Sie also möchten, dass Pip über einen weiten Bereich zugänglich ist, ist dies wahrscheinlich der richtige Weg. Ich sage nicht, dass andere Wege schlecht sind, aber das ist wahrscheinlich fair genug.
quelle
pip freeze
ich durch das Aufrufen fast eingefroren - die Liste der Pakete, die systemweit installiert wurden, war viel zu lang. Seitdem empfehle ich dringend, die Installation des Python-Pakets "no sudo" und "no os-wide" zu verwenden.Installieren Sie ActivePython . Es umfasst pip, virtualenv und Distribute.
quelle
Ich bin kürzlich auf das gleiche Problem gestoßen. Ich bin immer mehr an der Einstellung interessiert, immer eine virtuelle Umgebung zu verwenden, daher bestand mein Problem darin, die virtuelle Umgebung mit pip zu installieren, ohne die Verteilung in meinem globalen Verzeichnis oder dem Verzeichnis der Benutzer-Site-Pakete zu installieren. Zu diesem Zweck habe ich Distribute, Pip und Virtualenv manuell heruntergeladen und für jedes Programm "python setup.py install --prefix ~ / .local / python-private" ausgeführt (mit der temporären Einstellung PYTHONPATH = ~ / .local / python-private), damit Setup-Skripte verteilen konnten). Ich habe das virtualenv-Skript in ein anderes Verzeichnis verschoben, das sich in meinem PATH befindet, und es so bearbeitet, dass die Distribute- und virtualenv-Module auf sys.path zu finden sind. Tada: Ich habe nichts in / usr, / usr / local oder in meinem Benutzer-Site-Paket-Verzeichnis installiert, aber ich kann virtualenv überall ausführen, und in diesem virtualenv bekomme ich pip.
quelle
Ich hatte verschiedene Probleme (siehe unten) bei der Installation aktualisierter SSL-Module, sogar innerhalb einer virtuellen Umgebung, auf älteren Python-Versionen, die vom Betriebssystem bereitgestellt werden. Daher verwende ich sie jetzt
pyenv
.pyenv macht die Installation neuer Python-Versionen sehr einfach und unterstützt virtualenvs. Der Einstieg ist viel einfacher als die in anderen Antworten aufgeführten Rezepte für virtualenv:
brew install pyenv
Verwenden Sie auf einem Mac und unter Linux das pyenv-InstallationsprogrammDies funktioniert sehr gut, um die "neue Python" -Version und die virtuelle Umgebung von System Python zu isolieren. Da Sie problemlos ein neueres Python verwenden können (nach 2.7.9), sind die SSL-Module bereits aktualisiert, und natürlich sind Sie wie jedes moderne Virtualenv-Setup von den Python-Systemmodulen isoliert.
Ein paar nette Tutorials:
pyenv global 3.6.1
(global für den aktuellen Benutzer) oderpyenv local 2.7.13
(lokal für das aktuelle Verzeichnis).Das
pyenv-virtualenv
Plugin ist jetzt eingebaut - Typpyenv commands | grep virtualenv
zur Überprüfung. Ich würde das pyenv-virtualenvwrapper-Plugin zunächst nicht verwenden - sehen Sie, wie Sie mit pyenv-virtualenv umgehen, das stärker in pyenv integriert ist, da dies den größten Teil der Funktionen von virtualenvwrapper abdeckt.pyenv
ist modelliertrbenv
(ein gutes Tool für das Umschalten der Ruby-Version) und seine einzige Abhängigkeit ist Bash.pyvenv
tun - das ist ein virtuelles Env-Äquivalent, das Teil der neuesten Python 3-Versionen ist und das Umschalten der Python-Version nicht übernimmtVorsichtsmaßnahmen
Zwei Warnungen vor Pyenv:
dash
, das/bin/sh
auf Ubuntu oder Debian läuft .bash --login
über ein Terminal), was mit Automatisierungstools wie Ansible nicht immer einfach zu erreichen ist .Daher eignet sich pyenv am besten für die interaktive Verwendung und weniger für die Erstellung von Skriptservern.
Probleme mit SSL-Modulen
Ein Grund für die Verwendung
pyenv
ist, dass bei der Verwendung älterer, vom System bereitgestellter Python-Versionen häufig Probleme beim Aktualisieren von Python-SSL-Modulen auftreten:quelle
Sie können dies tun, ohne etwas in Python selbst zu installieren.
Sie benötigen weder Sudo noch Privilegien.
Sie müssen nicht die neueste Version einer
virtualenv
TAR-Datei findenSie müssen die Versionsinformationen nicht in einem Bash-Skript bearbeiten, um die Dinge auf dem neuesten Stand zu halten.
Sie brauchen
curl
/wget
odertar
installiert, nochpip
odereasy_install
Dies funktioniert sowohl für 2.7 als auch für 3.X.
Speichern Sie Folgendes unter
/tmp/initvenv.py
:vom zukünftigen Import print_function
und benutze es als
zB (wenn Sie wirklich die
distribute
Kompatibilitätsschicht für benötigensetuptools
)Bitte beachten Sie, dass Sie bei älteren Python-Versionen möglicherweise
InsecurePlatformWarning
s¹ erhalten.Sobald Sie Ihre virtuelle Umgebung (z. B. Name
venv
) haben, können Sie eine andere virtuelle Umgebung einrichten, indem Sie Folgendes verwendenvirtualenv
:virtualenvwrapper
Ich empfehle , nach einem einmaligen Setup auch einen Blick auf virtualenvwrapper zu werfen :
und Aktivierung (kann über Ihr Anmeldeskript erfolgen):
Sie können Dinge tun wie:
¹ Ich habe keinen Weg gefunden, die Warnung zu unterdrücken. Es könnte in
pip
und / oder gelöst werdenrequest
, aber die Entwickler verweisen aufeinander als Ursache. Ich erhielt die oft nicht realistische Empfehlung, die von mir verwendete Python-Version auf die neueste Version zu aktualisieren. Ich bin mir sicher, dass dies z. B. meine Linux Mint 17-Installation beschädigen würde. Glücklicherweise werdenpip
Pakete zwischengespeichert, sodass die Warnung nur einmal pro Paketinstallation erstellt wird.quelle
InsecurePlatformWarning
(dh Warnung, wenn Python älter als Version 2.7.9 ist) kann behoben werden, indem zusätzliche Pakete pyopenssl, pyasn1, ndg-httpsclient von PyPI installiert werden. (Es unterstützt SSL, das Dekodieren von Zertifikaten und https über PyOpenSSL.) Ohne die richtigen Protokolle ist es wirklich nicht sicher genug, um Code herunterzuladen und auszuführen.Auf der offiziellen Virtualenv-Website finden Sie gute Anweisungen. https://pypi.python.org/pypi/virtualenv
Im Grunde , was ich habe, ist zu installieren
pip
mitsudo easy_install pip
, dann verwendetsudo pip install virtualenv
dann ein Umfeld geschaffen , mit:virtualenv my_env
(nennen Sie es , was Sie wollen), nach , dass ich tatvirtualenv --distribute my_env
; welches installiertdistribute
undpip
in meinem virtualenv.Befolgen Sie erneut die Anweisungen auf der
virtualenv
Seite.Eine Art Ärger, der von Ruby kommt; P.
quelle
Hier ist eine gute Möglichkeit, virtualenvwrapper zu installieren (Update davon ).
Laden Sie virtualenv-1.11.4 herunter (das Neueste finden Sie hier ), entpacken Sie es und öffnen Sie es
terminal
Das ist es, jetzt können Sie verwenden
mkvirtualenv env1
,lsvirtualenv
..etcHinweis: Sie können löschen
virtualenv-1.11.4
undvirtualenv-1.11.4.zip
von Downloads - Ordner.quelle
Die gute Nachricht ist, wenn Sie python3.4 installiert haben, ist pyvenv bereits installiert. Also nur
In dieser virtuellen Umgebung können Sie Pip verwenden, um Module für dieses Projekt zu installieren.
Lassen Sie diese virtuelle Umgebung einfach
quelle