簡體   English   中英

在setup.py要求中提供pytz版本

[英]Providing pytz version in setup.py requirements

問題

我想在我的庫中的setup.py腳本中包含pytz要求,但是也想要設置所需的最小版本。 但是pytz模塊使用的版本號(例如“ 2012f ”)似乎與distutils想要提供的版本號不兼容(例如“ 1.1.3 ”)。

有沒有辦法在不改變pytzdistutils情況下包含特定版本的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM