Python模块导入报错:No module named 'root_package' 求助
解决Python模块导入错误:No module named 'root_package'
问题原因
你在root_package\write_to_file目录下直接运行python write.py时,Python的模块搜索路径(sys.path)里没有包含root_package的上级目录,导致Python无法识别root_package作为可导入的包。
解决方案
方法1:在root_package目录下运行脚本(推荐)
切换到root_package目录,执行以下命令:
python -m write_to_file.write
这种方式会让Python自动将root_package所在目录加入搜索路径,原导入语句from root_package.main_package.main import getProduct无需修改即可正常工作。
方法2:在write.py中临时添加路径
在write.py的最开头添加代码,手动将root_package目录加入Python的搜索路径:
import sys import os # 获取当前脚本的绝对路径,向上回溯一级得到root_package目录 root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(root_dir) # 正常执行导入 from root_package.main_package.main import getProduct
添加后,你可以继续在root_package\write_to_file目录下执行python write.py。
方法3:设置PYTHONPATH环境变量(永久生效)
将root_package所在的上级目录添加到PYTHONPATH环境变量中,让Python永久识别该路径下的包:
- Windows:
命令行临时生效:
永久生效:打开系统环境变量设置,新增set PYTHONPATH=你的root_package所在上级目录路径;%PYTHONPATH%PYTHONPATH变量,值为root_package所在的上级目录路径。 - Linux/macOS:
终端临时生效:
永久生效:把上述命令添加到export PYTHONPATH="/你的root_package所在上级目录路径:$PYTHONPATH"~/.bashrc(bash)或~/.zshrc(zsh)文件中,保存后重启终端。
设置完成后,无论在哪个目录运行write.py,原导入语句都能正常使用。
内容的提问来源于stack exchange,提问作者LosProgramer
相关产品推荐
相关产品推荐

