我已经阅读了一些有关Python中的模块和软件包的文章(包括他们自己的教程),但是无法使其在我的项目中正常工作。我正在使用Python 3.7.5
这是我的目录结构:
framework/
__init__.py
build/
classifiers/
extraction/
extractionFile.py
quality/
utils/
utilsFile.py
在extractFile.py上,我有这行:
from ..utils.utilsFile import functionName
但是当我从提取目录运行extractFile.py时,出现以下错误:
Traceback (most recent call last):
File "extractionFile.py", line 25, in <module>
from ..utils.utilsFile import functionName
ImportError: attempted relative import with no known parent package
如果我使用以下命令从框架目录中运行extractingFile.py:
from utils.utilsFile import functionName
它正常工作。
因此,如何从兄弟目录中将utils目录仅转换为软件包,以便导入其中的任何文件?
注意:我只需要在该项目上使用该软件包。
注意:我试图获得一个永久性的解决方案,因此sys.path.insert()似乎不是一个选择。
相对导入仅在每个库路径的根目录内起作用,并且您不能使用相对导入来到达库路径的根目录的父目录。如果从您自己的项目中导入模块,则运行解释器的是库的根路径,因此,要导入utils/utilsFile.py
,必须从extractionFile.py
而不是framework
运行extraction
。