首页 > 解决方案 > 使用 __init__.py 从目录导入本地 python 模块

问题描述

我一直在做一个需要编辑和使用开源项目的项目,我们称之为 osproj。我将包含已编辑脚本的文件夹重命名为 osprojmine。

这是一个示例目录结构:

root/  
    mycode.py  
    osprojmine/  
        __init__.py  
        foo.py  
        bar.py  

在 mycode.py 我有 import 语句

import osprojmine as osproj

我已经能够在 mycode.py 中毫无问题地使用osproj.module()和运行,并且一切都运行顺利。osproj.class()

当我将文件发送给我的同事时,问题就出现了。他正在获得一个
ModuleNotFoundError: No module named 'osprojmine'

我正在使用 python 3.8.5。他在 3.9.6 上并已尝试降级。

看来他的 python 解释器只是没有将 osprojmine 识别为 python 包,但在我看来,它可以吗?很迷茫。我对这个领域比较陌生,所以欢迎任何和所有的建议!

标签: pythonpackagerelative-import

解决方案


同事(以及您)应该将代码运行为:

$ cd root
$ python -m mycode

这样绝对导入将得到解决


推荐阅读