2012-03-28 9 views
0

私はvirtualenvの中で次のスクリプトを実行しようとしています:これはどんな意味がありませんvirtualenv bug?

/usr/lib/python2.5/site-packages/starpy/utilapplication.py 

(python2.7.2-gonvaled1)[email protected]:~/.virtualenvs/python2.7.2-gonvaled1$ couchy.py 
Traceback (most recent call last): 
    File "/home/gonvaled/projects/bin/couchy.py", line 46, in <module> 
    from couchdb_support   import CouchdbLists 
    File "/home/gonvaled/projects/test_project/python_modules/couchdb_support.py", line 3615, in <module> 
    from asterisk_support   import AsteriskSupport 
    File "/home/gonvaled/projects/test_project/python_modules/asterisk_support.py", line 4, in <module> 
    from starpy_support     import AmiCommand 
    File "/home/gonvaled/projects/test_project/python_modules/starpy_support.py", line 7, in <module> 
    from starpy     import manager, fastagi, utilapplication, menu 
    File "/usr/lib/python2.5/site-packages/starpy/utilapplication.py", line 2, in <module> 
    from basicproperty import common, propertied, basic, weak 
    File "/usr/lib/python2.5/site-packages/basicproperty-0.6.12a-py2.5-linux-i686.egg/basicproperty/common.py", line 159, in <module> 
    from basictypes import datedatetime_types as ddt 
    File "/usr/lib/python2.5/site-packages/basicproperty-0.6.12a-py2.5-linux-i686.egg/basictypes/datedatetime_types.py", line 4, in <module> 
    from dateutil import parser 
    File "/usr/lib/python2.5/site-packages/python_dateutil-2.1-py2.5.egg/dateutil/parser.py", line 8 
    from __future__ import unicode_literals 
SyntaxError: future feature unicode_literals is not defined 

だから何とかのpythonからインポートしようとしています。私のvirtualenvのは非常にきれいです。

(python2.7.2-gonvaled1)[email protected]:~/.virtualenvs/python2.7.2-gonvaled1$ python 
Python 2.7.2 (default, Mar 29 2012, 00:31:29) 
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu4)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys 
>>> sys.path 
['', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python2.7/site-packages/pip-1.1-py2.7.egg', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python2.7/site-packages/Twisted-12.0.0-py2.7-linux-i686.egg', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python2.7/site-packages/zope.interface-3.8.0-py2.7-linux-i686.egg', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python2.7/site-packages/basicproperty-0.6.12a-py2.7-linux-i686.egg', '/home/gonvaled/projects/gonvaled_settings', '/home/gonvaled/django_apps', '/home/gonvaled/projects/test_project/ipc', '/home/gonvaled/projects/test_project/python_modules', '/home/gonvaled/projects/test_project/gdata', '/home/gonvaled/projects/callisto/libraries', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python27.zip', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python2.7', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python2.7/plat-linux2', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python2.7/lib-tk', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python2.7/lib-old', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python2.7/lib-dynload', '/usr/local/python/2.7.2/lib/python2.7', '/usr/local/python/2.7.2/lib/python2.7/plat-linux2', '/usr/local/python/2.7.2/lib/python2.7/lib-tk', '/home/gonvaled/.virtualenvs/python2.7.2-gonvaled1/lib/python2.7/site-packages'] 

そして:

(python2.7.2-gonvaled1)[email protected]:~/.virtualenvs/python2.7.2-gonvaled1$ pip freeze 
CouchDB==0.9dev 
DateUtils==0.5.1 
Twisted==12.0.0 
basicproperty==0.6.12a 
pystache==0.4.0 
python-dateutil==2.1 
pytz==2012b 
simplejson==2.4.0 
six==1.1.0 
starpy==1.0.0a12 
wsgiref==0.1.2 
zope.interface==3.8.0 

だから、要約する:Pythonは、私はvirtualenvの内だにもかかわらず/usr/lib/python2.5/site-packagesから輸入しています。どうすればいいの?

答えて

2

は、スクリプトを実行してみてください。お使いのシステムやファイルの最初の行行(shebang行)に応じて、あなたはPythonで実行されていない可能性あなたがいると思います。

+0

おかげで、それはそれだったを使用して作成されました。私のシバンは '#!/ usr/bin/python'です。 Pythonスクリプトを自分で実行することができないということは、ちょっと面倒です。つまり、仮想環境で実行するには、ホスト環境とは異なる何かをしなければならないということです。 (など、制御スクリプトを考えて、cronジョブ)それは効果的に、シェバングの概念を殺す、これは一般的にするために、私はそれに頼ることはできません。シバンに '#!python'を入れようとしましたが、明らかに絶対パスが必要です。 – dangonfast

+1

は '#!は/ usr/binに/ envをpython'のシェバング行を使用します。それはあなたのアクティブなvirtualenvのものでなければならない現在の '$ PATH'にある最初の' python'を使うべきです。 –

+0

それは感謝します、ありがとう。私はまもなくそれを試してみましょう。 – dangonfast

0

あなたはきれいにして離れてあなたのシステムのPythonからそれを維持するために--nositepackagesオプションを使用してvirtualenvのを作成する必要があります。あなたの有効virtualenvの中

$ python couch.py 

+0

はいや、いや、私はすでに私のvirtualenvのは非常にきれい* *たという。これは、実際には、 '--nositepackages'(それがデフォルトになっているので仕方によって、もはや、virtualenvの最近のバージョンで必要とされる、) – dangonfast