2014-07-16 46 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