Python项目中如何在非主目录实现跨目录模块导入?
解决Python跨目录模块导入问题
方法1:手动将项目根目录加入Python搜索路径
在dir2的脚本开头添加以下代码,把项目主目录(dir1和dir2的共同父目录)添加到Python的模块搜索路径中:
import sys import os # 获取项目根目录的绝对路径 root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(root_dir) # 此时可正常导入 from dir1 import func1
方法2:通过环境变量设置搜索路径
在运行dir2内的脚本前,先设置PYTHONPATH环境变量,将项目根目录纳入搜索范围:
Linux/macOS 终端
export PYTHONPATH=/你的项目根目录绝对路径:$PYTHONPATH python dir2/你的脚本文件名.py
Windows 命令提示符
set PYTHONPATH=你的项目根目录绝对路径;%PYTHONPATH% python dir2\你的脚本文件名.py
Windows PowerShell
$env:PYTHONPATH = "你的项目根目录绝对路径;" + $env:PYTHONPATH python dir2\你的脚本文件名.py
方法3:将项目作为可安装包(长期项目推荐)
在项目根目录创建setup.py文件,把项目打包为可安装模块,再以开发模式安装:
- 在根目录新建
setup.py:
from setuptools import setup, find_packages setup( name="your_project_name", version="0.1", packages=find_packages(), )
- 执行开发安装命令:
pip install -e .
完成后,无论在哪个目录运行脚本,都能直接使用from dir1 import func1导入。
方法4:始终从项目根目录运行脚本
保持从项目主目录执行dir2内的脚本,Python会自动将根目录加入搜索路径:
python dir2/你的脚本文件名.py
内容的提问来源于stack exchange,提问作者Mahdi Hosseini
相关产品推荐
相关产品推荐

