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

0 投票
2 回答
1628 浏览
提问于 2025-04-11 09:20

如果我所有的 __init__.py 文件都是空的,我还需要把它们放进版本控制里吗?或者有没有办法让 distutils 在安装的时候自动创建空的 __init__.py 文件?

2 个回答

7

在Python中,__init__.py 文件是有特别意义的!它表示这个文件所在的文件夹是一个Python模块。因此,这个文件在你的代码中是有实际作用的,通常也应该放在版本控制中。

你可以想象一下,有一个文件夹里面只放了一些资源,比如图片,而没有任何代码。这样的文件夹就不需要有 __init__.py 文件。那么,怎么区分哪些文件夹需要创建这个文件,哪些不需要呢?

4

你有没有想过为什么想要避免把空的 __init__.py 文件放进版本控制里?如果你这样做的话,你就不能在不先运行 distutils 的情况下,从源代码目录中import你的包。

如果你真的想这么做,我想你可以在 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 文件放在那儿相比,你这样做有什么好处呢?

撰写回答