You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现Python包示例文件夹中文件的直接运行?解决ModuleNotFoundError问题

解决Python包示例文件的模块导入问题

我来帮你搞定这个模块找不到的问题,针对你的目录结构,这里有几个不用依赖绝对路径的靠谱方案:

方案1:用开发模式安装包(最推荐)

这是长期开发最方便的方式,能让Python全局识别你的demandforecast包,不管你在哪里运行示例都没问题。

步骤很简单:

  1. 导航到项目的根目录(就是包含demandforecastexamples两个文件夹的那个目录)
  2. 运行命令:
pip install -e .

这个命令会把你的包以“可编辑”模式安装,之后不管你在examples目录还是其他地方运行python example_file.pyimport demandforecast都能正常工作,而且你修改包内的代码会实时生效,完全不用管路径问题。

方案2:在示例文件中动态添加正确的路径

如果你不想安装包,也可以在example_file.py开头用os.path拼接绝对路径,避免当前工作目录的影响。把示例文件的开头改成这样:

import os
import sys
# 获取当前示例文件的目录,再往上跳一级到项目根目录
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
sys.path.append(project_root)

from demandforecast import DemandForecast

if __name__ == '__main__':
    # Example code here

这样不管你从哪个目录运行example_file.py,路径解析都是准确的——os.path.dirname(__file__)总能拿到example_file.py的真实目录,往上一级就是包含demandforecast的根目录,用abspath转成绝对路径就不会出问题了。

你之前试的sys.path.append('../')失效,大概率是因为当前工作目录和脚本所在目录不一致导致的,用这种绝对路径拼接的方式就能避免这个坑。

方案3:使用相对导入(需特定运行方式)

相对导入只在把脚本当作模块运行时才有效,你可以从项目根目录运行示例:

  1. 先把example_file.py里的导入改成相对路径:
from ..demandforecast import DemandForecast

if __name__ == '__main__':
    # Example code here
  1. 然后在项目根目录运行命令:
python -m examples.example_file

注意:不能直接在examples目录运行python example_file.py,因为这时候脚本是作为顶层脚本执行的,相对导入会报错,必须用-m参数以模块方式运行。

内容的提问来源于stack exchange,提问作者Bernardo Trindade

火山引擎 最新活动