distutils可以创建空的__init__.py文件吗?

时间:2020-03-05 18:52:39  来源:igfitidea点击:

如果我所有的__init __。py文件都是空的,我是否必须将它们存储到版本控制中,或者是否有办法使distutils在安装过程中创建空的__init __。py文件?

解决方案

回答

在Python中,init.py文件实际上具有含义!它们意味着它们所在的文件夹是一个Python模块。因此,它们在代码中扮演着真正的角色,很可能应该存储在Version Control中。

我们可以想象一下源代码树中的文件夹不是Python模块,例如,仅包含资源(例如图片)且不包含代码的文件夹。该文件夹中不需要__init __。py文件。现在,我们如何区分distutils应该在其中创建这些文件的文件夹和不应在其中创建这些文件的文件夹之间?

回答

我们是否有理由避免在版本控制中放入空的__init__.py文件?如果这样做,我们将无法从源目录"导入"软件包,而无需先运行distutils。

如果我们真的想要,我想我们可以在setup.py中创建__init __。py。它必须在运行distutils.setup之前进行,因此setup本身可以找到软件包:

from distutils import setup
import os

for path in [my_package_directories]:
    filename = os.path.join(pagh, '__init__.py')
    if not os.path.exists(filename):
        init = open(filename, 'w')
        init.close()

setup(
...
)

但是...与首先放置空的__init__.py文件相比,我们将从中得到什么?