Setup.py: ожидаемый список в скобках, если требуемое имя пакета содержит тире - программирование
Подтвердить что ты не робот

Setup.py: ожидаемый список в скобках, если требуемое имя пакета содержит тире

Я пишу многоразовое приложение Django, как описано здесь: https://django.readthedocs.org/en/1.5.x/intro/reusable-apps.html

Когда я укажу требование в 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, но я не вижу, как это сделать.

4b9b3361

Ответ 1

Аргумент require взят из distutils и ожидает имена пакетов python (некоторая документация здесь). Поскольку вы используете setuptools, вы должны использовать вместо этого аргумент install_requires, который поддерживает имена пакетов PyPI:

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

Больше информации об Указании зависимостей в Руководстве пользователя по Упаковке Python.