python中init和setup有什么区别_python – 为什么setup.py在安装期间运行模块__init__.py?...
我正在使用setup.py安裝包:
python setup.py install
我正在安裝的軟件包中的__init__.py包含一些軟件包級別檢查,其中一個檢查settings.py中是否有可用的屬性.由于它是可再發行的軟件包,因此不會通過軟件包提供settings.py,但用戶必須注意在項目范圍的settings.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 install運行我的__init__.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
version=__import__('lock').__version__,
File "/01_Development/django-simple-lock/lock/__init__.py", line 8, in
raise ImproperlyConfigured('Please add the PACKAGE_SPECIFIC_SETTING setting to your settings.py')
解決方法:
你的setup.py是可執行的python.它作為python腳本運行,以發現您的包分發配置.
您的setup.py運行此代碼:
version=__import__('lock').__version__,
這會導入您的鎖包,因此會加載該包中的__init__.py文件.刪除該呼叫,您的設置將成功.將版本存儲在其他地方.
請注意,引用甚至會明確告訴您:
File "setup.py", line 9, in
version=__import__('lock').__version__,
標簽:python,setup-py
總結
以上是生活随笔為你收集整理的python中init和setup有什么区别_python – 为什么setup.py在安装期间运行模块__init__.py?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以笑为盾下一句是什么啊?
- 下一篇: python做定时任务的方式及优缺点_p