无法导入自制Python包,报ModuleNotFoundError错误求助
模块导入错误:ModuleNotFoundError: No module named 'application'
项目结构
application ├── app │ └── package │ ├── __init__.py │ └── functions.py └── app2 └── some_folder └── file_2.py
文件内容
functions.py:
# functions.py def add(x,y): return x+y
__init__.py:空文件
问题描述
在file_2.py中尝试导入add函数:
# file_2.py from application.app.package.functions import add print(add(2,3))
运行后报错:
ModuleNotFoundError: No module named 'application'
尝试以下导入语句也出现相同错误:
from app.package.functions import add from package.functions import add from functions import add
解决方法
方法1:在脚本中添加项目根目录到Python路径
在file_2.py开头添加代码,手动将项目根目录(即application文件夹的上级目录)加入Python的模块搜索路径:
# file_2.py import sys from pathlib import Path # 获取项目根目录路径 project_root = Path(__file__).parent.parent.parent sys.path.append(str(project_root)) from application.app.package.functions import add print(add(2,3))
方法2:设置PYTHONPATH环境变量
运行脚本前,将项目根目录添加到PYTHONPATH环境变量中:
- Linux/macOS终端:
export PYTHONPATH="/你的项目根目录路径:$PYTHONPATH" python app2/some_folder/file_2.py
- Windows命令提示符:
set PYTHONPATH=C:\你的项目根目录路径;%PYTHONPATH% python app2\some_folder\file_2.py
- Windows PowerShell:
$env:PYTHONPATH = "C:\你的项目根目录路径;$env:PYTHONPATH" python app2\some_folder\file_2.py
方法3:将项目作为可安装包(推荐)
在application目录下创建setup.py文件:
from setuptools import setup, find_packages setup( name="application", version="0.1", packages=find_packages() )
然后在终端进入application目录,执行开发模式安装:
pip install -e .
安装完成后,就能直接使用from application.app.package.functions import add进行导入。
问题原因
Python只能在模块搜索路径中查找可导入的模块。你运行file_2.py时,项目根目录不在这个路径里,所以Python找不到application模块。教程中能正常运行,大概率是因为教程里的运行工作目录是项目根目录,或者已经配置了PYTHONPATH。
内容的提问来源于stack exchange,提问作者Damocls
相关产品推荐
相关产品推荐

