Может ли distutils создавать пустые __init__.py файлы? - PullRequest
0 голосов
/ 13 сентября 2008

Если все мои __init__.py файлы пусты, нужно ли сохранять их в системе управления версиями или есть способ заставить distutils создавать пустые __init__.py файлы во время установки?

Ответы [ 2 ]

7 голосов
/ 13 сентября 2008

В Python файлы __init__.py действительно имеют значение! Они означают, что папка, в которой они находятся, является модулем Python. Таким образом, они играют реальную роль в вашем коде и, скорее всего, должны храниться в системе контроля версий.

Вы можете представить себе папку в вашем исходном дереве, которая НЕ является модулем Python, например, папку, содержащую только ресурсы (например, изображения) и без кода. В этой папке не должно быть файла __init__.py. Теперь, как вы делаете различие между папками, где distutils должен создавать те файлы, и папками, где это не должно быть?

4 голосов
/ 13 сентября 2008

Есть ли причина, по которой вы хотите избегать помещения пустых __init__.py файлов в систему управления версиями? Если вы сделаете это, вы не сможете import ваших пакетов из исходного каталога без первого запуска distutils.

Если вы действительно хотите, я думаю, вы можете создать __init__.py в setup.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 там, в первую очередь?

...