Если все мои файлы __init__.py
пустые, нужно ли их хранить в контроле версий, или есть способ сделать distutils
создать пустые __init__.py
файлы во время установки?Может ли distutils создавать пустые файлы __init__.py?
ответ
Есть ли причина, по которой вы хотите избегать положить пустой __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
файлов там в первую очередь ?
В Python файлы __init__.py
имеют смысл! Они означают, что папка, в которой они находятся, является модулем Python. Таким образом, они имеют реальную роль в вашем коде и, скорее всего, будут храниться в контроле версий.
Вы можете представить себе папку в исходном дереве, которая НЕ является модулем Python, например папкой, содержащей только ресурсы (например, изображения) и без кода. Эта папка не должна содержать файл __init__.py
. Теперь, как вы делаете разницу между папками, где distutils должен создавать те файлы и папки, где это не должно быть?
Это вопрос, можете ли вы сказать distutils, что данная папка должна интерпретироваться как пакет, хотя у нее нет файла __init__.py. Я всегда мог создавать файлы __init__.py при создании дистрибутива, но мне было интересно, можете ли вы сделать это с distutils. – jelovirt 2008-09-13 11:39:45
Да, есть способ сообщить distutils (и любой другой код Python), что папка представляет собой пакет: поместите в папку файл __init__.py. – 2008-09-13 12:08:08