Ho l'impressione che l'utilizzo del flag --system-site-packages con virtualenv consentirà all'ambiente virtuale di utilizzare i pacchetti di sistema già installati. Tuttavia sto trovando che questo non è il caso. Sto usando una versione compilata personalizzata di Python. Puoi vedere il problema nei passaggi seguenti.virtualenv --system-site-packages che non utilizzano i pacchetti del sito di sistema
[[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
>>>
Risultati di python2.7 -c "import sys; stampa (sys.path)"
normale:
[[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.egg', '/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']
All'interno venv:
(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']
Cosa viene stampato se si tenta di importare "python2.7 -c" sys; print (sys.path) "" quando si utilizza sia Python all'interno del virtualenv che Python utilizzato per creare il virtualenv? –
Si prega di includere sopra le inserzioni nella tua domanda (vorrei posizionare un percorso per riga) e rimuoverle dai commenti. Grazie. –