使用 `pip install -e .` 安装的包为什么不需要 __init__.py 文件?

3

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

$ pip install -e .

在一个子包中没有__init__.py文件,但是我仍然可以无问题地进行导入。当我使用相同的方式进行安装时,情况也一样。

$ pip install .

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

(如果有影响的话:我使用Python 3.6)

1个回答

4

没有 __init__.py 的文件夹可能被视为一个隐式命名空间包的一部分。除非你知道什么是命名空间包并且明确需要一个,否则你仍应该在你的包中包含__init__.py,但这就是所发生的事情。

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

使用pip install .pip只安装setup.py指定要安装的内容,而您的setup.py不会指示安装没有__init__.py的文件夹。Python查找已安装版本的软件包,而不是您的原始源文件夹,并且不会找到没有__init__.py的文件夹。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接