2014-07-16 42 views
3

我正在使用venv從PyPI安裝elpy軟件包的新版本,而不是在根環境中提供的版本。從pip查詢,我看到下面的版本elpyEnthought python軟件包導入優先

~/python/standalone $ pip show elpy 
--- 
Name: elpy 
Version: 1.4.2 
Location: /home/wdkrnls/python/env/local/lib/python2.7/site-packages 
Requires: flake8 

然而,使用解釋給我的根環境的版本。

In [4]: import elpy 
In [5]: elpy.__version__ 
Out[5]: '1.3.0' 
In [6]: ?elpy 
Type:  module 
String Form:<module 'elpy' from '/home/ipython/Enthought2/lib/python2.7/site-packages/elpy/__init__.pyc'> 
File:  /home/ipython/Enthought/lib/python2.7/site-packages/elpy/__init__.py 
Docstring: 
The Emacs Lisp Python Environment. 

爲什麼會發生這種情況,我該如何解決?

sys.path是亂了,我不知道如何把它清理乾淨(我已經升級在過去的冠層分佈),但在這裏它是:

['', 
'/home/wdkrnls/python/env/local/bin', 
'/home/wdkrnls/python/env/local/lib/python2.7/site-packages/jediepcserver-0.0.0-py2.7.egg', 
'/home/wdkrnls/python/env/local/lib/python2.7/site-packages/epc-0.0.5-py2.7.egg', 
'/home/wdkrnls/python/env/local/lib/python2.7/site-packages/sexpdata-0.0.3-py2.7.egg', 
'/home/ipython/Enthought2/lib/python2.7/site-packages/PyCifRW-3.3-py2.7-linux-x86_64.egg', 
'/home/ipython/Enthought2/lib/python2.7/site-packages/graphtool-0.5.2-py2.7.egg', 
'/home/ipython/Enthought2/lib/python2.7/site-packages', 
'/home/wdkrnls/python/env/local/lib/python2.7/site-packages/argparse-1.2.1-py2.7.egg', 
'/share/apps/python/Canopy/appdata/canopy-1.3.0.1715.rh5-x86_64/lib/python2.7/site-packages', 
'/home/ipython/Enthought/Canopy_64bit/User/lib/python2.7/site-packages', 
'/home/wdkrnls/python/packages', 
'/home/wdkrnls/python/standalone', 
'/share/apps/python/Canopy/appdata/canopy-1.3.0.1715.rh5-x86_64/lib/python27.zip', 
'/share/apps/python/Canopy/appdata/canopy-1.3.0.1715.rh5-x86_64/lib/python2.7', 
'/share/apps/python/Canopy/appdata/canopy-1.3.0.1715.rh5-x86_64/lib/python2.7/plat-linux2', 
'/share/apps/python/Canopy/appdata/canopy-1.3.0.1715.rh5-x86_64/lib/python2.7/lib-tk', 
'/share/apps/python/Canopy/appdata/canopy-1.3.0.1715.rh5-x86_64/lib/python2.7/lib-old', 
'/share/apps/python/Canopy/appdata/canopy-1.3.0.1715.rh5-x86_64/lib/python2.7/lib-dynload', 
'/home/wdkrnls/python/env/local/lib/python2.7/site-packages', 
'/home/ipython/Enthought2/lib/python2.7/site-packages/PIL', 
'/home/ipython/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/PIL', 
'/share/apps/python/Canopy/appdata/canopy-1.3.0.1715.rh5-x86_64/lib/python2.7/site-packages/IPython/extensions', 
'/home/wdkrnls/python/packages', 
'/home/wdkrnls/python/standalone'] 

我應該如何去維護sys.path ? Canopy發行版需要所有這些.egg文件嗎?

+0

的〔蟒路徑和進口順序]可能重複(http://stackoverflow.com/questions/9586630/python-paths-and-import-order) – aruisdante

+0

嗯......在我的本地站點之前檢查根站點包。 – wdkrnls

+0

在你的.bashrc中導出路徑 –

回答

0

它看起來像你使用ipython。如果您尚未在virtualenv中安裝ipython,則正在運行的ipython可執行文件將成爲系統文件。

檢查,比較which ipythonwhich python。 Python可執行文件應該是virtualenv中的一個。如果賭ipython可執行文件是系統文件。

+1

'/ home/wdknrls/python/env/local/bin/ipython'是我安裝ipython的位置,我用'which'得到,與'/ home/wdkrnls/python/ENV/local/bin目錄/ python'。兩者似乎都是本地的。 – wdkrnls

+0

@wdkrnls - 那好吧,那就不要緊!您在創建virtualenv時是否使用了「--no-site-packages」選項? –

+0

我想我告訴它要從站點包繼承,因爲如果我沒有在本地安裝我自己的首選版本,我想使用站點包。 – wdkrnls

0

優先級順序可以通過印刷sys.path找到

+0

是的,優先順序是錯誤的。什麼是最簡潔的方法來解決它? – wdkrnls

+0

什麼是你的sys.path,以及環境變量PYTHONPATH和PYTHONHOME的值是什麼? –

+0

我在PYTHONPATH中只有兩個目錄:/ home/wdkrnls/python/packages:/ home/wdkrnls/python/standalone。 PYTHONHOME沒有任何東西。 – wdkrnls