【发布时间】:2019-04-13 03:44:15
【问题描述】:
我正在编写一组用于脚本和调试的工具,我正在打包。虽然我可以自己导入包,但每当我尝试导入包中的模块时,我都会收到 ModuleNotFoundError。
package_dir
│ README.md
│ setup.py
│
└───package
│ │ __init__.py
│ │
│ └───utils
│ │ __init__.py
│ │ image_utils.py
│ │ ...
│
└───...
安装:
使用python setup.py install 似乎工作正常,我可以成功import package
__init__.py:
我的理解是我不需要 __init__.py 文件,因为我正在运行 python3.6,但是我已经尝试了 package/ 和 utils/ 下有和没有 __init__.py 的所有组合,情况没有变化。无论配置如何,import package 都能正常工作,我无法导入任何模块。
我是如何导入的: 我在包结构之外的 Jupyter 笔记本中,我尝试了以下方法:
import package(有效)
from package import utils(无效:ImportError)
from package.utils import image_utils(无效:ModuleNotFoundError)
from package.utils.image_utils import func(无效:ModuleNotFoundError)
我也尝试使用相对导入在包的 __init__.py 中导入,但没有成功。我绝对不想每次想使用这些工具时都使用 sys.path.insert()。
我浏览了教程、文档和堆栈溢出。有人看到我错过了什么吗?
【问题讨论】:
-
你不需要在标题中加上“(python 3.6)”。它可以作为标签使用。
-
你能告诉我们你的__init__.py文件的内容吗?
-
@MFisherKDX init.py 文件目前是空的,但我也尝试过,只是相对导入 utils.image_utils
-
试试这个:1.
import package2.print(dir(package)).一切都在那里吗? -
@s3n0 不,一切都不存在。没有任何模块存在。输出只是:['builtins', 'cached', 'doc', 'file', ' loader', 'name', 'package', 'path', 'spec']
标签: python import module package python-3.6