Python setuptools AttributeError при чтении в конфигурации setup.cfg - PullRequest
0 голосов
/ 02 октября 2018

У меня есть следующий setup.py файл:

import setuptools
import setuptools.config

_CONFIG = setuptools.config.read_configuration('setup.cfg')

setuptools.setup(
    **_CONFIG
    )

... и setup.cfg файл:

[metadata]
name = Example
version = 1.0.0
author = First Last
author_email = first.last@example.com
home_page = https://www.github.com/firstlast/example
description = Example is an example project.
long_description = file: README.md
license_file = LICENSE
platform = any
keywords = example
classifiers =
  Programming Language :: Python
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3.3
  Programming Language :: Python :: 3.4
  Programming Language :: Python :: 3.5
  Programming Language :: Python :: 3.6
  Programming Language :: Python :: 3.7
  License :: Other/Proprietary License
  Operating System :: OS Independent

[options]
zip_safe = False
include_package_data = True
python_requires = >= 2.7, != 3.0.*, != 3.1.*, != 3.2.*
packages =
  example
setup_requires =
  setuptools
install_requires =
  requests

[options.extras_require]
dev =
  ipython

Чтобы установить модуль, я делаю следующее:

  1. Создание виртуальной среды с pipenv .

    $ pipenv --three
    
  2. Активируйте виртуальную среду.

    $ pipenv shell
    
  3. Попробуйте установить модуль пример в виртуальной среде.

    $ pip install .
    

Когда я выполняю шаг № 3, я получаю следующую ошибку:

Processing /Users/firstlast/Stuff/learn/python/setuptools/example
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/jw/f2zw3cls6xj20dld1h8st4jc0000gp/T/pip-req-build-rcbbm11x/setup.py", line 37, in <module>
        **_CONFIG
      File "/Users/firstlast/.local/share/virtualenvs/example-tYFXe0D0/lib/python3.7/site-packages/setuptools/__init__.py", line 140, in setup
        return distutils.core.setup(**attrs)
      File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/distutils/core.py", line 108, in setup
        _setup_distribution = dist = klass(attrs)
      File "/Users/firstlast/.local/share/virtualenvs/example-tYFXe0D0/lib/python3.7/site-packages/setuptools/dist.py", line 370, in __init__
        k: v for k, v in attrs.items()
      File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/distutils/dist.py", line 251, in __init__
        for (opt, val) in cmd_options.items():
    AttributeError: 'bool' object has no attribute 'items'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/jw/f2zw3cls6xj20dld1h8st4jc0000gp/T/pip-req-build-rcbbm11x/

Кажется, что setuptools использует значение, указанное в zip_file в качестве словаря, хотя в действительности это логическое значение.

Может кто-нибудь объяснить, что я делаю не так?

NOTE

Версия Python, установленная в виртуальной среде pipenv --three, - это Python 3.7.

Я подтвердил, что в виртуальной среде setuptools актуален (т.е. pip install --upgrade setuptools => "Требование уже обновлено: ... (40.4.3)"), а также сам pip (т.е. pip --version == 18,0).

1 Ответ

0 голосов
/ 02 октября 2018

Это не то, как setup.cfg используется.read_configuration() предназначено только для кода не-setuptools, который хочет прочитать setup.cfg;нет необходимости вызывать его по-своему setup.py, потому что setup() выполняет чтение и обработку самого setup.cfg.Просто измените setup.py на:

import setuptools

setuptools.setup()
...