Python项目配置实现从根目录相对路径导入模块及读取资源方法咨询
解决方案
方案1:开发阶段临时配置(无需安装包)
Python导入模块时会搜索sys.path里的所有路径,只要把项目下的src目录加到搜索路径中即可实现foo.<something>格式的导入:
- 环境变量配置
把src目录的绝对路径加入PYTHONPATH环境变量:- Linux/Mac 终端临时生效:
export PYTHONPATH="/你的项目路径/foo/src:$PYTHONPATH",要永久生效可将命令写入~/.bashrc、~/.zshrc等shell配置文件 - Windows cmd临时生效:
set PYTHONPATH=C:\你的项目路径\foo\src;%PYTHONPATH% - Windows PowerShell临时生效:
$env:PYTHONPATH = "C:\你的项目路径\foo\src;$env:PYTHONPATH"
- Linux/Mac 终端临时生效:
- IDE内配置
常用IDE支持直接标记源根目录,无需修改环境变量:- PyCharm:右键点击
src目录,选择「Mark Directory as」→「Sources Root」即可 - VS Code:在项目
.vscode/settings.json中添加配置:{ "python.analysis.extraPaths": ["./src"] }
- PyCharm:右键点击
方案2:正式打包安装(全环境通用)
这是Python官方推荐的标准做法,不依赖环境变量、IDE配置,开发、发布场景都适用:
- 在项目根目录(最外层的
foo文件夹,和data、src同级)新建pyproject.toml配置文件,写入以下内容:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "foo-demo" version = "0.1.0" packages = ["foo"] package_dir = {"": "src"}
- 在项目根目录执行安装命令:
- 开发模式安装:修改代码无需重新安装即可生效,适合开发阶段使用,执行命令
pip install -e . - 普通安装:适合打包发布使用,执行命令
pip install .
安装完成后,在任意路径下都可以直接使用foo.<something>格式导入模块。
- 开发模式安装:修改代码无需重新安装即可生效,适合开发阶段使用,执行命令
验证功能正常
你现有的DATA_DIR配置不需要修改,pathlib.Path(__file__)取的是包内__init__.py的绝对路径,路径计算逻辑正确,test.dat读取功能不受影响。
可执行以下命令验证:
python -c "from foo.hello import hello; hello()"
内容的提问来源于stack exchange,提问作者Athena Wisdom
相关产品推荐
相关产品推荐

