2013-03-12 14 views
25

oluşturup bir VIRTUALENV aktive (venv) Python 3.3 Şunu yapmanın yerleşik bir yolu kullanarak:Sanalenv'lere neden dağıtım ve pip yüklemesi yapıyorsunuz ./local/bin?

(env) $ which python 
/my_home_directory/env/bin/python 
: Bu noktada python anda

$ python3.3 -m venv env 
$ source env/bin/activate 

beklediğim benim virtualenv python olduğunu

Şimdi dağıtmak ve pip yüklemek istiyorum, bu yüzden kurulum komut dosyalarını indirmek ve bunları çalıştırmak:

(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 

Bu komutlar komple succes sfully. Bu noktada vesileyle, daha önce olmayan “yerel” adlı başka bir dizin bulmaya çalışıyorum. env/local/bin my easy_install ve pip çalıştırılabilir içerir ve onlar hala benim sistemin mevcut easy_install ve pip diğer adı ediyoruz:

(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 

Bu Python 2.x davranışları bir gidiş olduğunu düşünüyoruz. Bu noktada, virtualenv'in kopyalarını kullanmak için easy_install ve pip bekliyorum ve bunları yüklemek için bunları virtualenv içine koyacağım. biraz daha giderek

, Açık env/bin/env/bin sistemi yoluna önüne edilir bulmak için harekete çatlak, ancak env/local/bin değil. Bu benim gördüğüm davranışları açıklıyor. Yani

_OLD_VIRTUAL_PATH="$PATH" 
PATH="$VIRTUAL_ENV/bin:$PATH" 
PATH="$VIRTUAL_ENV/local/bin:$PATH" # my new line 
export PATH 

, burada neler oluyor: Ben yoluna env/local/bin dizini eklemek için aktive env/bin/bir şey gibi düzenleyerek bu sorunu gidermek çalışabilirsiniz? Bu bir hata mı, yoksa bir şeyi mi özlüyorum?

bir fark yapar durumda Ubuntu 12.10 gidiyorum.

+0

'pip' /' zaten easy_install' içermesi gerekiyordu? – MattDMo

+0

Tek. Debian üzerinde kişisel bir Python 3.3 yapıyorum ve benim için 'env/bin'de dağıt/pip kurulumu yapıyorum. Ubuntu deposundan 3.3 kopyası mı?Öyleyse, yerel bir kopya oluşturmayı deneyin ve bunun düzgün çalışıp çalışmadığını görün. – eryksun

+4

@MattDMo "virtualenv" komutunu kullandığınızda pip ve easy_install öğelerinin eklendiğine inanıyorum, ancak bu, Python 3.3'ün vesikalık modülünde, doc'lardan yargılandığı gibi görünmüyor. @eryksun Gerçekten Ubuntu'nun Python 3.3 sürümü. Yerel olarak kurmayı ve rapor vermeyi deneyeceğim. –

cevap

2

Ben bir yere dağıtmak ... ama onu takip etmemiş (ve ben orada Ubuntu'nun piton paketlerinde bir böcek ya da bir duygu umurumda değil eminim). Sebebi ne olursa olsun

, VIRTUAL_ENV ortam değişkeni dağıtmak ve pip düzgün yüklemek için virtualenv kök ayarlanması gerekir. 3 dokümanlar, setler değişken adı geçen Python Vinay Sajip kod örneğinden benimsenen

This gist

; hem dağıtmak hem de pip kullanarak onu doğru şekilde kuracaktır.

Virtualenv düşünce
+0

Onaylandı: virtualenv'in köküne VIRTUAL_ENV ayarı, pip ve dağıtıma düzgün bir şekilde yüklenmesine neden olur. Bunu Ubuntu 13.04'te test ettim. Teşekkürler! –

0

Aynı problem vardı. activate komut dosyasında I (#!... sonra cource) ilk satırı olarak eklemek gerekir:

unset PYTHON_PATH 
+3

Bunu, sorunun ne olduğu ve çözümünüzün neden işe yarayacağı konusunda genişletebilirseniz, bu daha iyi olur. –

+0

Aynı hatayı aldım .. ama bunu bu dosyanın üstüne eklediğimde sorunumu çöz ... Bunu dene .. – WBAR

+1

Bu benim için çalışmıyor. Ayrıca benim env/bin/activate'im # değil! ilk satırı olarak. Yukarıdaki yorumda da belirttiğim gibi, env/bin/activate dosyasını düzenleyerek kendi çalışmam var, ancak bir çalışmanın neden gerekli olduğunu belirlemeye çalışıyorum. –

1

Bu piton docs içinde.

'/ usr/local' default exec_prefix olduğunu. Varsayılan davranışı nasıl değiştireceğiniz hakkında ayrıntılı bilgi için venv docs'u okuyun. Orada dağıtmak ve sizin için pip yükler bir venv.EnvBuilder yapmak nasıl gösteren bir örnek bile var.

Dokümanları dağıtmak bulursanız, lütfen bana bildirin ;-)

+0

İyi bilgi, teşekkürler. Benim venv aktif olduğunda, 'sys.prefix' ve' sys.exec_prefix' her ikisi de venv'in kökü işaret eder. Ancak, belgelerin neresinde “pip” veya “easy_install” un bir vahiyle nasıl çalıştığını açıklamıyorum. Özel olarak, evdeki dokümanlardaki ilk "Not" bölümüne bakıyorum, ki bu da bana yukarıdaki şeylerin çoğaltılması adımlarına göre işler yapması gerektiğini söylüyor. Spesifik olarak: "Elbette, onları önce venv'e yüklemeniz gerekiyor: Bu, venv etkinken distrib_setup.py'yi çalıştırarak ve ardından easy_install pipini çalıştırarak yapılabilir." Herhangi bir fikir? –

İlgili konular