如何防止python加载'错误'包?

drj*_*rm3 11 python packages

显然,在我们的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包装也会发生同样的事情.这里有什么想法?

Int*_*ude 2

看来您需要将 pytabix 放在 sys.path 中较早出现的目录中,或者将 CrossMap 移动到路径中更靠下的目录中。

我喜欢更喜欢 pytabix 的想法。如果你可以:

  1. 修改 shell 的系统配置文件 (/etc/bash.bashrc) 以包含类似以下内容:export PYTHONPATH=$HOME/stuff/onpythonpath
  2. 使用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']
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)