为何无法从其他目录导入Python函数?多系统均遇此问题
解决跨目录Python模块导入失败问题
问题原因
Python导入模块时,只会在sys.path列表中的目录里查找模块。直接运行sad/main.py时,当前脚本所在的sad目录会被加入sys.path,但项目根目录(test)不在其中,因此无法找到同级的asd模块。
解决方案
方法1:动态添加项目根目录到sys.path
在main.py开头添加以下代码,将项目根目录加入Python的模块查找路径:
import sys import os # 回溯到项目根目录并添加到查找路径 project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(project_root) # 正常执行导入逻辑 from asd.message import message_func, email print(message_func()) print(email)
方法2:设置环境变量PYTHONPATH
把项目根目录添加到PYTHONPATH环境变量,让Python全局识别该目录下的模块:
- Linux/macOS:终端执行
若要永久生效,可将命令添加到export PYTHONPATH=/home/ma1lor/test:$PYTHONPATH~/.bashrc或~/.zshrc文件中。 - Windows:命令提示符执行
永久生效可通过系统属性-环境变量添加set PYTHONPATH=C:\path\to\test;%PYTHONPATH%PYTHONPATH变量。
方法3:以项目根目录为工作目录运行脚本
切换到项目根目录,用模块方式运行main.py:
cd ~/test python -m sad.main
这种方式下,项目根目录会自动被加入sys.path,无需修改代码。
内容的提问来源于stack exchange,提问作者Nazarii Shcherbak
相关产品推荐
相关产品推荐

