2013-04-21 67 views
14

我寫一個可重用的Django應用程序預計組合列表: https://django.readthedocs.org/en/1.5.x/intro/reusable-apps.htmlsetup.py:當需要包名稱中包含這裏描述了幾許

當我指定setup.py包含一個包中的破折號的要求名稱,setup.py不會運行。例如,如果我的setup.py包含這一行:

requires=[ 'djangotinymce', 'MtFileUtil', 'Django', 'PyYAML', ], 

然後它正常工作。

python ./setup.py sdist 
running sdist 
... 
Creating tar archive 

如果我改線看起來像這樣:

requires=[ 'django-tinymce', 'MtFileUtil', 'Django', 'PyYAML', ], 

我們得到一個奇怪的錯誤

Traceback (most recent call last): 
    File "./setup.py", line 32, in <module> 
    'Topic :: Internet :: WWW/HTTP :: Dynamic Content', 
    File "/usr/lib/python2.7/distutils/core.py", line 112, in setup 
    _setup_distribution = dist = klass(attrs) 
    File "/home/travis/venv/deleteme/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/dist.py", line 225, in __init__ 
    _Distribution.__init__(self,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 113, in __init__ 
    raise ValueError("expected parenthesized list: %r" % paren) 
ValueError: expected parenthesized list: '-tinymce' 

我不確定怎麼利用這一點。我想要求django-tinymce,但我看不到如何去做。

回答

16

require參數是從distutils,並期望python軟件包名稱(這裏的一些documentation)。在setuptools文檔中

install_requires=['djangotinymce', 'MtFileUtil', 'Django', 'PyYAML'], 

更多信息上Declaring Dependencies:由於您使用的setuptools,你應該使用install_requires說法相反,它不支持的PyPI包名。

+0

只是爲了澄清上述評論,您需要刪除-s。對於python,這些是算術運算符。即'django-tinymce' - >'djangotinymce'。 – Rebs 2014-05-09 02:26:17