我将尝试从我的一个项目中构建一个Python软件包。我的目录结构如下:
在我的mypackage.py文件中,我使用以下方式导入
据我所知,mypackage.py应该绝对是包的一部分,所以我不太明白为什么它不能像这样导入兄弟模块。在
mypackage
setup.py
src
__init__.py
mypackage.py
Node.py
(... and a lot of other files and subdirectories)
在我的mypackage.py文件中,我使用以下方式导入
Node
类:from .Node import Node
在以后导入mypackage
的时候,为了使它们更容易使用,我们需要将它们和其他几个类直接访问。然而,在成功构建包之后(只需使用来自mypackage文件夹父目录的pip install "mypackage/"
),当尝试在Python中导入该包时,我收到以下错误:
from .Node import Node
ImportError: attempted relative import with no known parent package
据我所知,mypackage.py应该绝对是包的一部分,所以我不太明白为什么它不能像这样导入兄弟模块。在
setup.py
文件中,我指定了:from setuptools import setup
setup(
<...>
py_modules=['mymodule'],
package_dir={'': 'src'}
)
这里我错过了什么?我对Python中的导入和模块系统并不了解。
from mypackage.Node import Node
,或者是我误解了问题?你不能使用相对导入来访问已安装软件包中的部分。 - GTBebbomypackage.py
。我认为它只是一个文件,当导入包时,其内容实际上可以直接访问(请参见最后一条评论)。我错了吗? - nutrxmypackage
,那么要访问mypackage.py
文件,您需要使用mypackage.mypackage
,通过使用mypackage.Node
,您并不是在使用mypackage.py
文件,而是告诉PythonNode.py
文件在哪个软件包中。 - GTBebboimport mypackage.mypackage
仍然导致相同的错误... - nutrx