python包中导入的奇怪问题

时间:2019-08-22 14:06:08

标签: python python-import docopt

我正在构建一个可安装的python程序包,它基本上是一个基于docopt和其他草药的CLI。

总体结构如下:

README.md
MANIFEST.in
setup.py
grok/
   __init__.py
   module.py
   other_module.py
   main.py

在我的main.py上,我导入了其他模块,如下所示:

main.py

# Imagine the docopt USAGE string here
from .module import something
from .other_module import other_something

# the rest of the logic comes here


主要问题是,我可以安装该软件包并使用它,但是,当我更改代码时,如果尝试这样运行它,则可能会添加功能或修复错误:

python main.py -h 

它给我以下错误:

ModuleNotFoundError: No module named '__main__.module'; '__main__' is not a package

我在Google上搜索了一下,发现由于导入中的dot我实际上是在引用__main__,因此,我应该删除dots并且应该能够按照我的意图进行测试。

我这样做了,并且有效,我测试了我所有的东西,然后运行了测试套件,作为套件的一部分,它测试了安装程序包并使用-h来运行它,作为一种烟熏方式-测试它,但失败并显示以下错误:

ModuleNotFoundError: No module named 'module'

然后我将dots重新添加到导入中,并通过了测试。

我在做什么错?从理论上讲,我应该能够以执行安装的程序包并在代码上运行它的方式导入所有内容,以进行测试,而无需进行任何更改。

有任何提示吗?

0 个答案:

没有答案