为什么用 `pip install -e .` 安装的包不需要 __init__.py?
Why do packages installed with `pip install -e .` not need __init__.py?
我最近发现安装了一个包
$ pip install -e .
子包中没有 __init__.py
文件。不过,我可以毫无问题地导入它。当我用
安装时
$ pip install .
我无法导入子包。为什么?
(以防万一:我使用 Python 3.6)
没有 __init__.py
的文件夹可能会被视为 implicit namespace package 的一部分。除非您知道名称空间包是什么并且特别想要一个,否则您仍然应该在包中包含 __init__.py
,但这就是这里发生的事情。
与 pip install -e .
一起,pip
安装一个东西,告诉 Python 直接在您的原始源文件夹中查找包内容。 Python 在您的源文件夹中查找时,它会找到非 __init__.py
文件夹。
使用 pip install .
,pip
只安装 setup.py
说要安装的东西,而你的 setup.py
没有说要安装 no-__init__.py
文件夹. Python 在包的安装版本中查找,而不是您的原始源文件夹,它没有找到 no-__init__.py
文件夹。
我最近发现安装了一个包
$ pip install -e .
子包中没有 __init__.py
文件。不过,我可以毫无问题地导入它。当我用
$ pip install .
我无法导入子包。为什么?
(以防万一:我使用 Python 3.6)
没有 __init__.py
的文件夹可能会被视为 implicit namespace package 的一部分。除非您知道名称空间包是什么并且特别想要一个,否则您仍然应该在包中包含 __init__.py
,但这就是这里发生的事情。
与 pip install -e .
一起,pip
安装一个东西,告诉 Python 直接在您的原始源文件夹中查找包内容。 Python 在您的源文件夹中查找时,它会找到非 __init__.py
文件夹。
使用 pip install .
,pip
只安装 setup.py
说要安装的东西,而你的 setup.py
没有说要安装 no-__init__.py
文件夹. Python 在包的安装版本中查找,而不是您的原始源文件夹,它没有找到 no-__init__.py
文件夹。