問題
ライブラリpytz
にスクリプト内の要件を含めたかったのですが、必要な最小バージョンも設定したかったのです。しかし、モジュールsetup.py
で使用されているバージョン番号(例: " ") は、提供したいもの (例: " ") と互換性がないようです。pytz
2012f
distutils
1.1.3
またはを変更せずにpytz
、特定のバージョンの要件を含める方法はありますか?>=2012f
pytz
distutils
詳細
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