显然,在我们的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的概念。如果你可以:

  • 修改您的Shell(/etc/bash.bashrc)的系统配置文件,使其包含以下内容: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']
    

    09-26 21:14