我正在尝试在 Windows 上设置 AOSP VTS 测试。安装时,有一个 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
点下载 -d %VTS_PYPI_PATH% -r pip_requirements.txt
注意:即使 pip_requirements.txt 被忽略,看起来 vts-tradefed 应用程序将安装 enum 和一些其他模块,这仍然会导致此问题。该应用程序引用了一组 .jar 文件,其源代码证实了这一点。此外,为了验证我尝试在不使用上述步骤下载模块的情况下运行 vts。但仍然得到相同的枚举相关错误。
enum.__file__的属性如下图所示:
>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
经过一番分析,我发现pip正在下载的枚举包正在下载以下“ https://pypi.org/project/enum/ ”。这个包也有一个 enum.py 这可能是导致属性错误的原因:
AttributeError: module 'enum' has no attribute '__version__'
PyPI 页面链接提到:
被 Python 标准库取代。
Python 3 现在在其标准库中具有一个取代该库的枚举实现(也可用于较旧的 Python 版本,作为第三方 enum34 发行版)。
我的理解是:既然 Python3 枚举包取代了 PyPI 枚举包,那么应该使用 Python3 枚举包而不是 PyPI 枚举包吧?
我的理解对吗?如果是这样,那么如何实现呢?即当 pip 尝试下载/安装 enum 包时,如何重定向它以使用 Python3 枚举包而不使用 PyPI 的 enum 包?
提前致谢!!