2013-04-21 15 views
14
einen Bindestrich enthalten

Ich bin eine wiederverwendbare Django app zu schreiben, wie hier beschrieben: https://django.readthedocs.org/en/1.5.x/intro/reusable-apps.htmlsetup.py: erwartete klammerten Liste bei Bedarf Paketnamen

Wenn ich eine Anforderung in setup.py angeben, die einen Bindestrich in dem Paket enthält name, setup.py wird nicht ausgeführt. Zum Beispiel, wenn mein setup.py diese Zeile enthält:

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

Dann funktioniert es richtig.

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

Wenn ich die Zeile wie folgt aussehen ändern:

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

Wir bekommen eine seltsame Fehler

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' 

Ich bin nicht sicher, was daraus zu machen. Ich möchte Django-Tinymce verlangen, aber ich kann nicht sehen, wie es geht.

Antwort

16

Das require Argument ist von distutils und erwartet Python-Paketnamen (einige documentation hier). Da Sie setuptools verwenden, sollten Sie die install_requires Argument verwenden stattdessen die PyPI Paketnamen unterstützt:

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

Weitere Informationen über Declaring Dependencies in der setuptools Dokumentation.

+0

Nur um den obigen Kommentar zu verdeutlichen, müssen Sie die -'s entfernen. Für Python sind dies arithmetische Operatoren. Dh "django-tinymce" -> "djangotinymce". – Rebs