[英]Providing pytz version in setup.py requirements
我想在我的庫中的setup.py
腳本中包含pytz
要求,但是也想要設置所需的最小版本。 但是pytz
模塊使用的版本號(例如“ 2012f
”)似乎與distutils
想要提供的版本號不兼容(例如“ 1.1.3
”)。
有沒有辦法在不改變pytz
或distutils
情況下包含特定版本的pytz
(例如>=2012f
)的pytz
?
為此,我在setup.py
文件中做了類似的事情:
setup(
# ... basic data here ...
requires=[
'pytz (>=2012f)',
],
# ... some other data here ...
)
但是當我在做sudo python setup.py install
,出現了以下錯誤:
Traceback (most recent call last):
File "setup.py", line 25, in <module>
long_description=long_description,
File "/usr/lib/python2.7/distutils/core.py", line 112, in setup
_setup_distribution = dist = klass(attrs)
File "/usr/lib/python2.7/distutils/dist.py", line 259, in __init__
getattr(self.metadata, "set_" + key)(val)
File "/usr/lib/python2.7/distutils/dist.py", line 1220, in set_requires
distutils.versionpredicate.VersionPredicate(v)
File "/usr/lib/python2.7/distutils/versionpredicate.py", line 115, in __init__
self.pred = [splitUp(aPred) for aPred in str.split(",")]
File "/usr/lib/python2.7/distutils/versionpredicate.py", line 25, in splitUp
return (comp, distutils.version.StrictVersion(verStr))
File "/usr/lib/python2.7/distutils/version.py", line 40, in __init__
self.parse(vstring)
File "/usr/lib/python2.7/distutils/version.py", line 107, in parse
raise ValueError, "invalid version number '%s'" % vstring
ValueError: invalid version number '2012f'
看似問題是由試圖匹配這個正則表達式的distutils
引起的:
version_re = re.compile(r'^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$',
re.VERBOSE)
當它不匹配時,會引發上述錯誤。
我看到有人改變了pytz
的源代碼(將版本更改為更像2012.6
的版本),但對我來說這看起來非常糟糕。 我希望我錯過了另一種方式。
將pytz (>=2012f)
更改為pytz
可以正常工作,但它不會將要求限制為特定版本的pytz
模塊。
使用install_requires
setuptools選項 :
setup(
# ... basic data here ...
install_requires='pytz>=2012f', # distutils ignores it with a warning, pip uses it
# ... some other data here ...
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.