我第一次尝试构建Python包/库。到目前为止,我有以下文件:
src
Accentizer2
__init__.py
Accentizer.py
Annotation.py
test
test_1.py
文件内容:
Accentizer.py:
from Annotation import Annotation # this is where the error occurs
class Accentizer:
x = 10
Annotation.py:
class Annotation:
Variants = []
测试_1.py:
from src.Accentizer2.Accentizer import Accentizer
当我运行test_1.py时,我得到以下错误:
Traceback (most recent call last):
File "..\tests\test_1.py", line 1, in <module>
from src.Accentizer2.Accentizer import Accentizer
File "..\src\Accentizer2\Accentizer.py", line 1, in <module>
from Annotation import Annotation
ModuleNotFoundError: No module named 'Annotation'
当我运行Accentizer.py时,它运行正常
我错过了什么?将测试链接到被测试代码的传统方式是什么
将Accentizer.py
中的import语句更改为以下行可以修复错误:
from src.Accentizer2.Accentizer import Accentizer
但是,在构建并安装Accentizer2包并尝试将其导入另一个项目后,出现错误“src不是模块名”
这里有几件事有点不对劲
当前问题
在
Accentizer.py
中,您正试图导入一个全局包Annotation
。但是,Annotation.py
是一个本地文件(包/文件夹的本地文件)假设您的
src
文件夹位于sys.path
中,正确的方法是(给定您的文件夹结构)具有全局或本地导入注意:全局和本地名称并非真正标准:)全球进口
这只是导入包,并在导入期间提供完全限定的路径。假设
src
在路径中本地进口
这个文件夹不关心所有内容的位置,而是使用
.
来引用当前文件夹。你也可以用..
来指代父母,用...
来指代祖父母,等等文体问题
src
文件夹有一个
src
文件夹是非pythonic的。对于许多语言来说,这是一种习惯,但对于python来说,这并不多见命名约定
通常,您不希望将文件命名为与类名相同的名称。我建议让文件
accentizer.py
和annotation.py
分别具有Accentizer
和Annotation
类。原因是类和文件具有相同的名称可能会中断导入过程相关问题 更多 >
编程相关推荐