Python ImportError: No module named common.io_util 如何解决?
文件目录大概如下所示:
---_init_.py
---common
------io_util.py
------_init_.py
---config
------util.py
------_init_.py
---data_pip
------_init_.py
------importance_analysis
----------plot.py
----------_init_.py
然后在 plot.py 里面导入:
from common.io_util import parse_line,
from config.util import *
执行 plot.py 报错 ImportError: No module named common.io_util,试过网上说的好几种方法都不行,请问怎么解决
Python ImportError: No module named common.io_util 如何解决?
你的 common 没在 path 里面。
办法 1:把根目录加入 sys.path 中
办法 2:从根目录运行 python ./data_pip/importance_analysis/plot.py
这个错误通常是因为你的Python环境中没有安装名为 common.io_util 的模块,或者模块的导入路径不对。
首先,你得确认这个模块到底在哪。common.io_util 看起来像是一个自定义的包,结构应该是这样的:
你的项目目录/
├── common/
│ ├── __init__.py
│ └── io_util.py
└── 你的主程序.py
检查你的项目目录里有没有一个叫 common 的文件夹,里面有没有 io_util.py 这个文件。__init__.py 文件(可以是空的)也必须存在,这样Python才会把它当作一个包。
如果文件结构是对的,但还是报错,那可能是Python找不到这个模块。有几种方法解决:
-
最直接的方法:在代码里改路径。 在你主程序的开头,加上这几行代码,把项目根目录添加到Python的模块搜索路径里:
import sys import os # 获取当前文件的目录,然后找到它的父目录(项目根目录) current_dir = os.path.dirname(os.path.abspath(__file__)) project_root = os.path.dirname(current_dir) # 假设你的主程序在项目根目录下 sys.path.insert(0, project_root)然后你再
import common.io_util应该就行了。 -
用相对导入(如果你的脚本在包内)。 如果你的主程序文件本身就放在
common的同级或子目录里,并且你自己也把它当作一个模块来运行(而不是顶层脚本),可以尝试在common包内的其他模块中使用相对导入,比如from . import io_util。但这对顶层脚本不适用,容易乱,新手不建议。 -
设置PYTHONPATH环境变量。 在运行程序之前,在终端里设置:
# Linux/macOS export PYTHONPATH="/你的/项目/根目录/路径:$PYTHONPATH" # Windows set PYTHONPATH=C:\你的\项目\根目录\路径;%PYTHONPATH%然后再运行你的脚本。这个方法是一次性的,关掉终端就没了。
总结:先检查文件结构,然后优先用 sys.path 修改导入路径。
按照你的方式组织了一遍, 没问题啊.
是不是因为你把 init (双下划线), 写成 init (单下划线了)…
init.py 是双下划线
我这里写成单下划线_了,实际上我这边已经写成__了
我这里写成单下划线_了,实际上我这边已经写成__了
试试 在导入前 import sys
sys.path.append(common_path) 或者 from plot.common.io_util import parse_line
还有一种可能 pip uninstall common
在 common 的__init__.py 加入 import sys sys.path.append(".")试试
在 pycharm 里面 选中那个包,右键 Mark Directory as -----》 Sources Root ,让这个文件变为一个包
上面就是我的意思

