无需修改sys.path,如何从Python项目根目录导入模块?
解决方案:利用Python包结构与模块运行方式
以下是无需修改sys.path、不用移回主脚本的官方标准方法:
1. 将项目配置为正规Python包
- 在项目根目录创建
pyproject.toml(旧版可使用setup.py),声明这是一个可安装的包。示例pyproject.toml内容:[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "your_project_name" version = "0.1.0" - 执行
pip install -e .以开发模式安装包。之后无论在项目哪个目录,都能直接通过from lib.utils import function导入模块,因为包已被Python识别为全局可导入项,同时不影响lib内部的相对导入。
2. 使用-m参数以模块方式运行脚本
- 切换到项目根目录,用模块路径的方式运行
realtime下的script.py:
这种运行方式会自动将项目根目录加入Python模块搜索路径,把整个项目当作包处理,既满足python -m realtime.scriptscript.py的跨目录导入需求,也不会破坏lib内部的相对导入逻辑。
3. 将脚本目录设为子包(可选补充)
- 若不想安装包,可在
realtime目录下创建空的__init__.py文件,将其标记为Python子包,之后配合方法2的-m参数运行即可达到同样效果。
注:以上方法均为Python官方文档推荐的模块导入规范,完全无需手动修改
sys.path或移动脚本位置。
内容的提问来源于stack exchange,提问作者Droid
相关产品推荐
相关产品推荐

