【发布时间】:2019-12-01 02:20:57
【问题描述】:
我最近发现了一个安装包
$ pip install -e .
子包中没有__init__.py 文件。不过,我可以毫无问题地导入它。当我安装相同的
$ pip install .
我无法导入子包。为什么?
(以防万一:我使用 Python 3.6)
【问题讨论】:
我最近发现了一个安装包
$ pip install -e .
子包中没有__init__.py 文件。不过,我可以毫无问题地导入它。当我安装相同的
$ pip install .
我无法导入子包。为什么?
(以防万一:我使用 Python 3.6)
【问题讨论】:
没有__init__.py 的文件夹可能被视为implicit namespace package 的一部分。除非你知道命名空间包是什么并且特别想要一个,否则你仍然应该在你的包中包含__init__.py,但这就是这里发生的事情。
使用pip install -e .,pip 会安装一个告诉 Python 直接在原始源文件夹中查找包内容的东西。当 Python 在您的源文件夹中查找时,它会找到 no-__init__.py 文件夹。
使用pip install .,pip 只安装setup.py 说要安装的东西,而您的setup.py 没有说安装 no-__init__.py 文件夹。 Python 会查找已安装的软件包版本,而不是您的原始源文件夹,并且找不到 no-__init__.py 文件夹。
【讨论】: