为什么安装带有“pip install -e ”的软件包不需要__init__.py



我最近发现一个软件包安装了

$ pip install -e .

子包中没有__init__.py文件。不过,我可以毫无问题地导入它。当我安装相同的

$ pip install .

我无法导入子包。为什么?

(以防万一:我使用 Python 3.6(

没有__init__.py的文件夹可以被视为隐式命名空间包的一部分。除非您知道命名空间包是什么并且特别想要一个,否则您仍应在包中包含__init__.py,但这就是这里发生的事情。

使用 pip install -e .pip安装一个东西,告诉 Python 直接在原始源文件夹中查找包内容。当 Python 查找源文件夹时,它会找到无__init__.py文件夹。

使用 pip install .pip只安装setup.py所说的要安装的内容,而您的setup.py不会说要安装无__init__.py文件夹。Python 查找已安装的软件包版本,而不是原始源文件夹,并且找不到 no- __init__.py 文件夹。

相关内容

最新更新