Как использовать enum из Python3, а не enum из PyPI - проблема при установке Android VTS в Windows? - PullRequest
1 голос
/ 10 октября 2019

Я пытаюсь настроить AOSP VTS ​​test в Windows . При установке существует файл pip_requirements.txt, который пытается загрузить пакет enum , который позже будет установлен во время выполнения теста. Во время выполнения контрольного примера возникает проблема, связанная с перечислением, которая приводит к сбою vts-run. Ошибка, возникающая во время выполнения теста, показана ниже.

 ..\AppData\Local\Temp\pip-install-zp3vtjdn\enum\setup.py", line 24, in <module>
            version = main_module.__version__
        AttributeError: module 'enum' has no attribute '__version__'

Ссылка на этапы выполнения теста VTS: https://codelabs.developers.google.com/codelabs/android-vts/index.html?index=..%2F..index#1

загрузка pip -d% VTS_PYPI_PATH% -r pip_requirements.txt

ПРИМЕЧАНИЕ. Даже если файл pip_requirements.txt игнорируется, похоже, что приложение vts-tradefed собирается установить enum и несколько других модулей, которые все еще будут вызывать эту проблему. Приложение ссылается на набор файлов .jar, чей исходный код подтверждает это. Также, чтобы проверить, я попытался запустить vts без загрузки модулей, используя описанные выше шаги. Но все равно получил ту же ошибку, связанную с enum.

Свойство файла enum .__ __ показано ниже:

>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import enum
>>> print(enum.__file__)
C:\Python37\lib\enum.py

После некоторого анализа я обнаружил, что пакет enum загружается пипомзагружает следующее "https://pypi.org/project/enum/". В этом пакете также есть файл enum.py, который, вероятно, является причиной возникновения ошибки атрибута:

AttributeError: module 'enum' has no attribute '__version__'

Ссылка на страницу PyPI упоминает, что:

Заменено стандартной библиотекой Python.

В стандартной библиотеке Python 3 теперь есть реализация enum (также доступная для более старых версий Python в качестве стороннего дистрибутива enum34), которая заменяет эту библиотеку.

Насколько я понимаю: поскольку пакет перечисления Python3 заменяет пакет перечисления PyPI, следует использовать пакет перечисления Python3 вместо пакета перечисления PyPI?

Правильно ли мое понимание? Если дато, как этого добиться? т.е. когда pip пытается загрузить / установить пакет enum, как перенаправить его на использование пакета enum Python3 и не использоватьпакет enum от PyPI?

Спасибо заранее !!

1 Ответ

0 голосов
/ 11 октября 2019

Python 3 Enum не является заменой PyPI enum - у него разные API. Если устанавливаемый пакет действительно нуждается в версии PyPI, тогда версия stdlib не будет работать.

...