解决 windows
使用 pip 安装 oslo.messaging 时依赖 Microsoft C++ Build Tools
问题
错误日志
$ pip install oslo.messaging
Collecting oslo.messaging
Downloading oslo.messaging-12.9.1-py3-none-any.whl (250 kB)
...
Collecting extras>=1.0.0
Downloading extras-1.0.0-py2.py3-none-any.whl (7.3 kB)
Using legacy 'setup.py install' for netifaces, since package 'wheel' is not installed.
Using legacy 'setup.py install' for wrapt, since package 'wheel' is not installed.
Using legacy 'setup.py install' for Yappi, since package 'wheel' is not installed.
Installing collected packages: wrapt, six, pyparsing, pbr, urllib3, pytz, packaging, oslo.i18n, netifaces, netaddr, iso8601, idna, debtcollector, charset-normalizer, certifi, stevedore, rfc3986, requests, PyYAML, pycparser, oslo.utils, msgpack, extras, vine, testtools, repoze.lru, python-dateutil, oslo.serialization, oslo.context, oslo.config, MarkupSafe, greenlet, fasteners, dnspython, cffi, Yappi, WebOb, statsd, Routes, prometheus-client, PasteDeploy, Paste, oslo.log, oslo.concurrency, Jinja2, fixtures, eventlet, bcrypt, amqp, oslo.service, oslo.middleware, oslo.metrics, kombu, futurist, cachetools, oslo.messaging
Running setup.py install for wrapt: started
Running setup.py install for wrapt: finished with status 'done'
Running setup.py install for netifaces: started
Running setup.py install for netifaces: finished with status 'error'
ERROR: Command errored out with exit status 1:
command: 'C:\Users\xiexianbin\AppData\Local\Programs\Python\Python39\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\xiexianbin\\AppData\\Local\\Temp\\pip-install-7cd29ci2\\netifaces_581105673b9d48e283e8a11494a52076\\setup.py'"'"'; __file__='"'"'C:\\Users\\xiexianbin\\AppData\\Local\\Temp\\pip-install-7cd29ci2\\netifaces_581105673b9d48e283e8a11494a52076\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\xiexianbin\AppData\Local\Temp\pip-record-8ya9ipn0\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Users\xiexianbin\AppData\Local\Programs\Python\Python39\Include\netifaces'
cwd: C:\Users\xiexianbin\AppData\Local\Temp\pip-install-7cd29ci2\netifaces_581105673b9d48e283e8a11494a52076\
Complete output (5 lines):
running install
running build
running build_ext
building 'netifaces' extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
----------------------------------------
ERROR: Command errored out with exit status 1: 'C:\Users\xiexianbin\AppData\Local\Programs\Python\Python39\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\xiexianbin\\AppData\\Local\\Temp\\pip-install-7cd29ci2\\netifaces_581105673b9d48e283e8a11494a52076\\setup.py'"'"'; __file__='"'"'C:\\Users\\xiexianbin\\AppData\\Local\\Temp\\pip-install-7cd29ci2\\netifaces_581105673b9d48e283e8a11494a52076\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\xiexianbin\AppData\Local\Temp\pip-record-8ya9ipn0\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Users\xiexianbin\AppData\Local\Programs\Python\Python39\Include\netifaces' Check the logs for full command output.
WARNING: You are using pip version 21.2.3; however, version 21.2.4 is available.
You should consider upgrading via the 'C:\Users\xiexianbin\AppData\Local\Programs\Python\Python39\python.exe -m pip install --upgrade pip' command.
解决方式
从日志看,是由于安装 Yappi
没有找到对应的 whl
,导致从源码安装,并依赖 Microsoft C++ Build Tools
引起。因此,我们可以找到 Yappi
的 whl
安装包,手动安装。
该包可以在 https://www.lfd.uci.edu/~gohlke/pythonlibs/#yappi 根据匹配的 Python 版本下载。