Python:导入子模块

标签 python python-3.x

我正在尝试建立一个具有以下结构的新 Python 项目:

project:
   src:
      app1:
         main.py
      utils:
         __init__.py
         utils1:
            __init__.py
            utils1.py
   tests:

我想在 main.c 中导入 utils1。

我在 main.py 中尝试了以下操作,但它不起作用:

main.py

from project.src.utils.utils1 import utils1

这表明出现以下错误:

(virtualenv)user: /home/user/project/src/app1 $ python main.py
   ImportError: No module named 'project'

如何在 main 中正确导入 utils1?

最佳答案

项目目录中没有__init__.py,因此project未被识别为包。 src 目录也是如此。

此外,您是从 app1 目录运行的,因此它上面的目录在 pythonpath 中不可见。

切换目录到~/project/src,将utils目录移动到app1,运行./app1/main.py 导入app1.utils.utils1.utils1

最后:

您的布局应如下所示:

project:
   src:
      app1:
         main.py
         utils:
            __init__.py
            utils1:
               __init__.py
               utils1.py
   tests:

执行为:

(virtualenv)user: /home/user/project/src $ python ./app1/main.py

并导入为:

from app1.utils.utils1 import utils1

关于Python:导入子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45208612/

相关文章:

python - yield 中的 yield 有什么作用?

python - 错误处理 : Boto: [Error 104] Connection Reset by Peer

Python:解析各种不同的文本文件电子邮件

python 重新: no such group

python-3.x - 子目录中的导入脚本不起作用... Blender Add-On

Python re.sub 从一组中抓取单个字符

python - 如何使我的Discord机器人播放YouTube上的音频

python - 我可以从 PriorityQueue 中获取项目而不删除它吗?

python - 如何创建指向正在定义的结构的指针?

python - 优化 pandas 数据帧应用于解码 CAN 帧 - 迭代行