我正在包装要用于脚本和调试的一组工具。虽然可以导入程序包本身,但是每次尝试导入程序包中的模块时,我都会得到一个ModuleNotFoundError
。
package_dir
│ README.md
│ setup.py
│
└───package
│ │ __init__.py
│ │
│ └───utils
│ │ __init__.py
│ │ image_utils.py
│ │ ...
│
└───...
安装:
使用python setup.py install
似乎可以正常工作,并且我可以成功import package
__ init __。py:
我的理解是,自从我运行python3.6以来,我不需要__init__.py文件,但是我已经尝试在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()。
我已经仔细研究了教程,文档和堆栈溢出。有人看到我想念的东西吗?
答案 0 :(得分:0)
我发现以前的版本(所有模块目录中没有正确的__init__.py文件或软件包的__init__.py中的import语句)无法识别我的最新安装。
要解决此问题,我首先尝试删除安装过程中创建的所有文件:
from Tkinter import *
但是,这实际上并未向我显示我需要删除的所有内容。
这使我可以正确安装。感谢大家的帮助!