Python模块导入报错:实现script.py与helper.py独立运行的方案
模块导入冲突解决方案需求
项目目录结构
MyProject --- script.py | - helpers --- __init__.py | - class_container.py | - helper.py
各文件代码
class_container.py
class MyClass: pass
helper.py
from class_container import MyClass def func(): # some code using MyClass
script.py
from helpers.helper import func
运行错误情况
- 直接运行
script.py时,报错:
ModuleNotFoundError: No module named 'class_container'
- 修改
helper.py导入语句为from helpers.class_container import MyClass后,运行script.py正常,但直接运行helper.py时报错:
ModuleNotFoundError: No module named 'helpers'
需求
无需修改任何模块代码,实现同时独立运行script.py和helper.py,且不采用修改sys.path的方案。
解决方案
方案1:使用-m参数以模块形式运行脚本
在MyProject目录下执行以下命令:
- 运行script.py:
python -m script
- 运行helper.py:
python -m helpers.helper
这种方式会自动将MyProject目录加入Python的模块搜索路径,让两种导入逻辑都能正常工作。
方案2:设置PYTHONPATH环境变量
将MyProject目录的绝对路径添加到PYTHONPATH环境变量中:
- Linux/macOS终端:
export PYTHONPATH="/path/to/MyProject:$PYTHONPATH"
- Windows命令提示符:
set PYTHONPATH=C:\path\to\MyProject;%PYTHONPATH%
- Windows PowerShell:
$env:PYTHONPATH = "C:\path\to\MyProject;" + $env:PYTHONPATH
设置完成后,无论在哪个目录下,直接运行python script.py或python helpers/helper.py都能正常执行。
内容的提问来源于stack exchange,提问作者UpTheIrons
相关产品推荐
相关产品推荐

