显然,在我们的Python/2.7.2
环境中加载了一个名为CrossMap
的包,该包具有tabix
作为子包。当我启动此版本的python和import tabix
时,tabix
显示:/hpcf/apps/python/install/2.7.2/lib/python2.7/site-packages/CrossMap-0.1.6-py2.7-linux-x86_64.egg/tabix/__init__.pyc
表示它是从CrossMap
加载的。现在,即使我使用pip install pytabix
(在tabix.so
目录中创建了site-packages
文件),它仍然会达到CrossMap
版本。我什至尝试使用pytabix
安装本地化pip install --user pytabix
,但它仍会加载CrossMap
版本。
如何将import tabix
指向tabix.so
文件而不是CrossMap
的子包?
更新:即使将CrossMap
移至“old_versions”目录后,当我尝试加载tabix
时,它仍然会遇到另一个以tabix
作为子包的包。当我import tabix
然后运行tabix
时,即使我在主RSeQC-2.6.1
目录中拥有pytabix
作为它自己的软件包,我也从site-packages
获得了pysam软件包。 pysam
包也会发生同样的事情。这里有什么想法吗?
最佳答案
似乎您需要将pytabix放在sys.path中较早出现的目录中,或将CrossMap移到路径更远的目录中。
我喜欢偏爱pytabix的概念。如果你可以:
export PYTHONPATH=$HOME/stuff/onpythonpath
pip install --target="$HOME/stuff/onpythonpath" pytabix
修改系统范围的配置文件应该将新路径放在
sys.path
中相当早的位置。首选pytabix的另一种方法是将其安装为可编辑模式。在我的系统中,其效果是将新安装的软件包首先放在sys.path中:
前任:
我之前的路径(包括通过在配置文件中导出PYTHONPATH添加的“onpythonpath”):
['',
'/usr/local/bin',
'/home/keith/devel/onpythonpath',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages']
现在运行后:
pip install -e git+https://github.com/slowkow/pytabix.git@40e7a78ba6fdfbf72a25da718f530e7c1bad389e#pytabix
这是我的路:
['',
'/usr/local/bin',
'/home/keith/src/pytabix',
'/home/keith/devel/onpythonpath',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages']