解决已经下载了包但是报错ModuleNotFoundError: No module named ‘bx.interval’

解决已经下载了包但是报错ModuleNotFoundError: No module named ‘bx.interval’

在跑hic-pro的test文件的时候,总是在一步卡住,追溯到log文件显示:
前面显示的是from intervals import intersection in啥啥的,然后就显示没有这个‘bx.intervals’的模块。

ModuleNotFoundError: No module named 'bx.intervals'
  1. 错误的尝试
    那查询了一下,说可能就是bx-python这个python包没有下载好,遂删掉了环境下的所有bx相关的,然后再重新下载,用以下命令:
pip install bx-python

但是还是一样的报错,我甚至怀疑和这个包根本没有关系,因为bx-python 和intervals包是并列放在了/lustre/home/acct-agrfyd/agrfyd/.conda/envs/py3.7/lib/python3.7/site-packages/路径下面的。(至于如何找一个下载好的包的路径就是 “pip install 包的名称”就会显示环境下的路径)
当我退回到 site-packages的路径下的时候,打开python(这个时候的环境要是再py3.7),然后

python3.7.7
>>>import bx.intervals
>>>
#显示是可以导入的

那这时候经过网页查询额书籍查询,了解到可能是导入模块的时候路径搜索出现了问题。
首先我们可以在site-packagesx下去查找sys.path文件

Python 3.7.7 (default, Mar 23 2020, 22:36:06) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/lustre/home/acct-agrfyd/agrfyd/.conda/envs/py3.7/lib/python3.7/site-packages', '/lustre/home/acct-agrfyd/agrfyd/.conda/envs/py3.7/lib/python37.zip', '/lustre/home/acct-agrfyd/agrfyd/.conda/envs/py3.7/lib/python3.7', '/lustre/home/acct-agrfyd/agrfyd/.conda/envs/py3.7/lib/python3.7/lib-dynload', '/lustre/home/acct-agrfyd/agrfyd/.local/lib/python3.7/site-packages']
>>> 

这里出现的输出结果是由四个部分组成

  1. 程序的主目录:即程序(顶层)文件所在的目录,而非启动程序所在的目录(当前工作日目录)
  2. 环境变量(PYTHONPATH)目录
  3. 标准连接库目录
  4. 任何.pth文件的内容(如果存在的话),在安装目录下找到该文件,以行的形式加入所需要的目录即可。

那么这个sys.path文件保存了模块搜索路径在机器上的实际配置,可以通过打印内置的sys.path来查看路径。
作用:导入模块的时候,python会由左至右搜索列表中的每一个目录,直到找到对应的module后。
其中①③是系统自定义的,而②④可以用于拓展路径,从而加入自己的源代码目录。

考虑是模块搜索路径出了问题,需要配置搜索路径,配置搜索路径的方式主要有3种:

一:用于当前终端:在当前终端中输入:export PATH=$PATH:<你的要加入的路径>不过上面的方法只适用于当前终端,一旦当前终端关闭或在另一个终端中,则无效。 export
NDK_ROOT=/home/jiang/soft/Android-ndk-r8e #只能在当前终端使用。
二:用于当前用户:在用户主目录下有一个 .bashrc 隐藏文件,可以在此文件中加入 PATH 的设置如下: $ gedit
~/.bashrc 加入:export PATH=<你的要加入的路径>: P A T H 如 果 要 加 入 多 个 路 径 , 只 要 : e x p o r t P A T H = < 你 要 加 入 的 路 径 1 > : < 你 要 加 入 的 路 径 2 > : . . . . . . : PATH 如果要加入多个路径,只要:export PATH=<你要加入的路径1>:<你要加入的路径2>: ...... : PATH如果要加入多个路径,只要:exportPATH=<你要加入的路径1>:<你要加入的路径2>:......:PATH当中每个路径要以冒号分隔。这样每次登录都会生效
添加PYTHONPATH的方法也是这样,在.bashrc中添加
export PYTHONPATH=/home/zhao/setup/caffe-master/python:/home/zhao/setup/mypy:$PYTHONPATH
保存后在终端输入 $ source ~/.bashrc 使环境变量立即生效

三:用于所有用户:$ sudo gedit /etc/profile 加入: export PATH=<你要加入的路径>:$PATH
就可以了。 终端输入:echo $PATH 可以查看环境变量
注意,修改环境变量后,除了第一种方法立即生效外,第二第三种方法要立即生效,可以source ~/.bashrc或者注销再次登录后就可以了!

因此我通过vi ~/.bashrc添加PYTHONPATH来修改了之后,就可以成功地调用模块,在任何目录下都可以了。

上一篇:【汇编语言】《汇编语言》王爽-实验1


下一篇:王爽试验第8章