ich erstellen und aktivieren eine virtualenv (Venv) mit Python 3.3 die integrierte Möglichkeit, es zu tun:Warum verteilen und pip installieren zu meinem virtualenv ./local/bin?
$ python3.3 -m venv env
$ source env/bin/activate
An dieser Stelle python
die Python in meinem virtualenv ist, was ich erwarten:
(env) $ which python
/my_home_directory/env/bin/python
Jetzt möchte ich installieren verteilen und Pip, so dass ich laden sie die Setup-Skripten und führen sie:
(env)$ wget http://python-distribute.org/distribute_setup.py
(env)$ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
(env)$ python distribute_setup.py
(env)$ python get-pip.py
Diese Befehle komplette succes süchtig. An diesem Punkt untersuche ich mein venv, um ein anderes Verzeichnis namens "local" zu finden, das vorher nicht da war. env/local/bin enthält meine easy_install und pip ausführbare Dateien, und sie sind immer noch auf meinem System vorhandene easy_install und Pip-aliased:
(env)$ ls env
bin include lib local pyvenv.cfg
(env)$ ls env/bin
activate pydoc python python3 python3.3
(env)$ ls env/local/bin
easy_install easy_install-3.3 pip pip-3.3
(env)$ which easy_install
/usr/bin/easy_install
(env)$ which pip
/usr/bin/pip
Ich glaube, dies ist eine Abkehr von Python 2.x Verhalten. An dieser Stelle erwarte ich easy_install
und pip
, die virtualenv Kopien zu verwenden, und ihre Verwendung, um Eier zu installieren, wird sie in den virtualenv setzen.
Geht ein bisschen weiter, ich knacken öffnen env/bin/aktivieren, um zu finden, dass env/bin dem Systempfad vorangestellt wird, aber env/local/bin nicht. Das erklärt das Verhalten, das ich sehe. Ich kann durch die Bearbeitung env/bin/aktivieren hinzuzufügen, um das env/local/bin auf dem Weg, so etwas wie dieses Problem umgehen:
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
PATH="$VIRTUAL_ENV/local/bin:$PATH" # my new line
export PATH
Also, was ist denn hier los? Ist das ein Fehler, oder fehlt mir etwas?
Ich bin auf Ubuntu 12.10, falls das einen Unterschied macht.
Ich dachte, der virtualenv sollte schon 'pip' /' easy_install' enthalten? – MattDMo
Ungerade. Ich benutze einen persönlichen Build von Python 3.3 auf Debian und verteile/pip install in 'env/bin' für mich. Ist Ihre Kopie von 3.3 aus dem Ubuntu-Repository?Wenn dies der Fall ist, erstellen Sie eine lokale Kopie und prüfen Sie, ob das korrekt funktioniert. – eryksun
@MattDMo Ich glaube, pip und easy_install sind enthalten, wenn Sie den 'virtualenv'-Befehl verwenden, aber das scheint nicht der Fall mit Python 3.3s venv-Modul zu sein, aus den Dokumenten zu urteilen. @eryksun Es ist in der Tat Ubuntu-Version von Python 3.3. Ich werde versuchen, lokal zu bauen und Bericht zu erstatten. –