나는 setup.py를 사용하여 패키지를 설치 해요 :setup.py가 설치하는 동안 __init__.py 모듈을 실행하는 이유는 무엇입니까?
python setup.py install
내 내가 설치가 그것의 하나는 속성이 settings.py
에서 사용할 수 있는지 여부를 확인, 일부 패키지 수준의 검사를 포함하고있어 패키지에 __init__.py
. 재배포 가능 패키지이기 때문에 settings.py
은 패키지를 통해 전달되지 않지만 사용자는 프로젝트 전반의 settings.py에서 올바르게 설정되었는지주의해야합니다. 전화 setup.py install
내 __init__.py
실행하는 이유
from django.core.exceptions import ImproperlyConfigured
from django.conf import settings
#check if settings are properly set
if not hasattr(settings, 'PACKAGE_SPECIFIC_SETTING'):
raise ImproperlyConfigured('Please add the PACKAGE_SPECIFIC_SETTING setting to your settings.py')
지금 궁금하네요 (가 아니라 매우 놀랍게도, 설정을 찾을 수없는 때문에 충돌.) 내가 기대 한 것
setup.py
만 복사 내 패키지 그 코드를 실행하지 않습니다. 내 패키지를 사용하는 다른 앱이 내 패키지를 코드로 가져올 때마다 코드가 실행되어야합니다.
편집 : 요청에 따라 포함 setup.py
#!/usr/bin/env python
# vim: ai ts=4 sts=4 et sw=4 coding=utf-8
from distutils.core import setup
setup(
name='django-simple-lock',
version=__import__('lock').__version__,
license = 'GNU Lesser General Public License (LGPL), Version 3',
requires = ['python (>= 2.5)', 'django (>= 1.3)'],
provides = ['lock'],
description='Simple locking implementation as a reusable'
'Django app.',
long_description=open('README.rst').read(),
url='http://github.com/mr-stateradio/django-simple-lock',
packages=['lock', 'lock.tests'],
classifiers = [
'Development Status :: 4 - Beta',
'Environment :: Web Environment',
'Framework :: Django',
'Intended Audience :: Developers',
'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',
'Programming Language :: Python',
'Topic :: Database',
'Topic :: Software Development :: Libraries :: Python Modules',
],
)
편집 : 포함 역 추적 :
/Users/Me/.virtualenvs/django1_4/bin/python setup.py install
Traceback (most recent call last):
File "setup.py", line 9, in <module>
version=__import__('lock').__version__,
File "/01_Development/django-simple-lock/lock/__init__.py", line 8, in <module>
raise ImproperlyConfigured('Please add the PACKAGE_SPECIFIC_SETTING setting to your settings.py')
패키지를 가져올 때 실제로 "실행"하는 경우와 상관없이'__init __. py'가 호출됩니다. 그럼 어디서나 가져 오는거야? –
역 추적 및 'setup.py'의 세부 사항을 포함하십시오. –