2012-11-05 11 views
7

Ben virtualenv ile --system-site-paketler bayrağını kullanarak sanal ortam zaten yüklü sistem paketlerini kullanmanızı sağlayacak bir izlenim altında değilim. Ancak bunun böyle olmadığını anlıyorum. Python'un özel derlenmiş bir sürümünü kullanıyorum. Sorunu aşağıdaki adımlarda görebilirsiniz. python2.7 -c aitVirtualenv --system-site-paketler

[[email protected] django]$ which python 
/app/python/bin/python 
[[email protected] django]$ which pip 
/app/python/bin/pip 
[[email protected] django]$ which virtualenv 
/app/python/bin/virtualenv 
[[email protected] django]$ python 
Python 2.7.3 (default, Jul 27 2012, 11:30:41) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import django 
>>> exit() 
[[email protected] django]$ pip freeze 
Django==1.4.2 
distribute==0.6.30 
mercurial==2.3.2 
python-ldap==2.4.10 
virtualenv==1.8.2 
wsgiref==0.1.2 
[[email protected] django]$ pip --version 
pip 1.2.1 from /app/python/lib/python2.7/site-packages (python 2.7) 
[[email protected] django]$ env 
<snip> 
LD_LIBRARY_PATH=/app/python/lib:/app/openldap/lib:/app/instantclient_11_2 
PATH=/app/python/bin:/app/openldap/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/bin/cfdelivered:/home/user/bin:/app/oracle/product/java/jdk1.6.0_30/bin 
PYTHONPATH=/app/python/lib/python2.7 
[[email protected] django]$ virtualenv --system-site-packages --distribute --python /app/python/bin/python2.7 foo 
Running virtualenv with interpreter /app/python/bin/python2.7 
New python executable in foo/bin/python2.7 
Also creating executable in foo/bin/python 
Installing distribute...<snip>...done. 
Installing pip................done. 
[[email protected] django]$ . foo/bin/activate 
(foo)[[email protected] django]$ which python 
/app/xxx/django/foo/bin/python 
(foo)[[email protected] django]$ which pip 
/app/xxx/django/foo/bin/pip 
(foo)[[email protected] django]$ env 
<snip> 
LD_LIBRARY_PATH=/app/python/lib:/app/openldap/lib:/app/instantclient_11_2 
VIRTUAL_ENV=/app/xxx/django/foo 
PATH=/app/xxx/django/foo/bin:/app/python/bin:/app/openldap/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/bin/cfdelivered:/home/user/bin:/app/oracle/product/java/jdk1.6.0_30/bin 
PYTHONPATH=/app/python/lib/python2.7 
(foo)[[email protected] django]$ python 
Python 2.7.3 (default, Jul 27 2012, 11:30:41) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import django 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named django 
>>> 

Sonuçları "ithal sys; baskı (sys.path)" Normal

: venv İçinde

[[email protected] django]$ python2.7 -c "import sys;print(sys.path)" ['', '/app/python/lib/python2.7/site-packages/cx_Oracle-5.1.2-py2.7-linux-x86_64.egg'‌​, '/app/python/lib/python2.7/site-packages/python_ldap-2.4.10-py2.7-linux-x86_64.e‌​gg', '/app/python/lib/python2.7', '/app/python/lib/python27.zip', '/app/python/lib/python2.7/plat-linux2', '/app/python/lib/python2.7/lib-tk', '/app/python/lib/python2.7/lib-old', '/app/python/lib/python2.7/lib-dynload', '/app/python/lib/python2.7/site-packages'] 

: Ben

(foo)[[email protected] django]$ python2.7 -c "import sys;print(sys.path)" ['', '/app/xxx/django/foo/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg', '/app/xxx/django/foo/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg', '/app/python/lib/python2.7', '/app/xxx/django/foo/lib/python27.zip', '/app/xxx/django/foo/lib/python2.7', '/app/xxx/django/foo/lib/python2.7/plat-linux2', '/app/xxx/django/foo/lib/python2.7/lib-tk', '/app/xxx/django/foo/lib/python2.7/lib-old', '/app/xxx/django/foo/lib/python2.7/lib-dynload', '/app/xxx/django/foo/lib/python2.7/site-packages'] 
+0

"import sys; baskı (sys.path)"' kullanarak hem virtualenv Python içinde ve Python VIRTUALENV yaratmak için kullanıldığında? –

+0

Lütfen yukarıdaki listeleri sorunuza ekleyin (her satır için bir yol koyarım) ve yorumlardan kaldırın. Teşekkürler. –

cevap

6

virtualenv'u oluşturduğunuzda neyin yanlış gittiğinden emin değilsiniz, ancaknumaralı telefondan beklenen değerleri almamış. Sanal ortam x oluşturmak için virtualenv x --system-site-packages kullanırsanız, sys.path numaralı Python'un site-packages dizinini görmelisiniz. Yukarıdaki girişinizde, iç venv davası için son öğe normal durumla aynı olmalıdır: /app/python/lib/python2.7/site-packages. Durumun böyle olup olmadığını görmek için --system-site-packages olan ve olmayan iki basit virtualenv oluşturmayı deneyebilirsiniz. Aksi halde, yapılandırmanızı basitleştirmeyi ve yeniden denemeyi deneyebilirsiniz, örneğin, ayarlamanız gerekmeyen PYTHONPATH gibi ortam değişkenlerini kaldırmak gibi. Eğer `python2.7 -c çalışırsanız yazdırılır ne

+2

PYTHONPATH ortam değişkeni soruna neden oluyordu. Bu sorunu gidermek sorunu çözdü. Yardım ettiğin için teşekkür ederim! –