显然,在我们的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版本.我甚至尝试过安装pytabixlocalling pip install --user pytabix,但它仍然加载了CrossMap版本.
我怎么能点import tabix到tabix.so的文件,而不是分装CrossMap?
更新:即使在转移CrossMap到'old_versions'目录后,当我尝试加载时tabix,它仍会遇到另一个包tabix作为子包.当我import tabix然后运行时tabix,我得到了一个pysam包,RSeQC-2.6.1即使我pytabix在主site-packages目录中拥有它自己的包.pysam包装也会发生同样的事情.这里有什么想法?
看来您需要将 pytabix 放在 sys.path 中较早出现的目录中,或者将 CrossMap 移动到路径中更靠下的目录中。
我喜欢更喜欢 pytabix 的想法。如果你可以:
export PYTHONPATH=$HOME/stuff/onpythonpathpip 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']
Run Code Online (Sandbox Code Playgroud)
现在运行后:
pip install -e git+https://github.com/slowkow/pytabix.git@40e7a78ba6fdfbf72a25da718f530e7c1bad389e#pytabix
Run Code Online (Sandbox Code Playgroud)
这是我的道路:
['',
'/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']
Run Code Online (Sandbox Code Playgroud)