tox 无法在 windows 上安装 pyYaml
tox fails to install pyYaml on windows
我的 tox.ini 文件在 windows
上看起来像这样
[tox]
envlist = cpy27,dpy27
skip_missing_interpreters = True
[testenv]
basepython =
cpy27: C:\Python27\python.exe
dpy27: D:\Python27\python.exe
deps =
pytest
commands = py.test tests
但是当我从命令提示符执行 "tox" 时,我看到了这个错误。为什么是这样?我没有看到任何错误,如果我 运行 python setup.py 在命令行上安装
Installing collected packages: coverage, pytest-cov, requests, psutil, pytz, enum, argh, pathtools, PyYAML, watchdog, monit
Running setup.py install for PyYAML: started
Running setup.py install for PyYAML: finished with status 'error'
Complete output from command d:\repos\foo\.tox\dpy27\scripts\python.exe -u -c "import setuptools, tokenize;__file__='c:\users\foo\appdata\local\temp\pip-build-bbx8kz\PyYAML\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record c:\users\vikone\appdata\local\temp\pip-zyvbbh-record\install-record.txt --single-version-externally-managed --compile --install-headers d:\repos\foo\.tox\dpy27\include\site\python2.7\PyYAML:
running install
running build
running build_py
creating build
creating build\lib.win-amd64-2.7
creating build\lib.win-amd64-2.7\yaml
copying lib\yaml\composer.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\constructor.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\cyaml.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\dumper.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\emitter.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\error.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\events.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\loader.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\nodes.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\parser.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\reader.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\representer.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\resolver.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\scanner.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\serializer.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\tokens.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\__init__.py -> build\lib.win-amd64-2.7\yaml
running build_ext
creating build\temp.win-amd64-2.7
creating build\temp.win-amd64-2.7\Release
checking if libyaml is compilable
error: [Error 2] The system cannot find the file specified
更新
我确实注意到,当我手动激活 virtualenv 并执行 "pip install pyyaml" 它失败并出现相同的错误。但是当我在常规命令提示符下,而不是 virtualenv,并执行相同的命令时,它安装正常。
所以这似乎是 pyyaml 和 virtualenv 的问题,但不是 tox 本身的问题。
另外,如果我在 tox.ini 中尝试使用 easy_install 命令,它会工作 w/o 任何问题。
[testenv]
install_command = easy_install {opts} {packages}
看起来二进制文件没有轮子,当 PIP 下载 PyYAML 时,它尝试构建它但不能。
我通过下载源代码、构建轮子然后将其上传到我的本地 devpi 服务器来为我的计算机修复此问题。然后我可以在 virtualenv 中使用 pip 安装它。
如果重要的话,我正在使用 Windows 10。
编辑
发现了问题。这需要安装。 VC for Python(这是2.7,但使用合适)https://www.microsoft.com/en-gb/download/details.aspx?id=44266
我的 tox.ini 文件在 windows
上看起来像这样[tox]
envlist = cpy27,dpy27
skip_missing_interpreters = True
[testenv]
basepython =
cpy27: C:\Python27\python.exe
dpy27: D:\Python27\python.exe
deps =
pytest
commands = py.test tests
但是当我从命令提示符执行 "tox" 时,我看到了这个错误。为什么是这样?我没有看到任何错误,如果我 运行 python setup.py 在命令行上安装
Installing collected packages: coverage, pytest-cov, requests, psutil, pytz, enum, argh, pathtools, PyYAML, watchdog, monit
Running setup.py install for PyYAML: started
Running setup.py install for PyYAML: finished with status 'error'
Complete output from command d:\repos\foo\.tox\dpy27\scripts\python.exe -u -c "import setuptools, tokenize;__file__='c:\users\foo\appdata\local\temp\pip-build-bbx8kz\PyYAML\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record c:\users\vikone\appdata\local\temp\pip-zyvbbh-record\install-record.txt --single-version-externally-managed --compile --install-headers d:\repos\foo\.tox\dpy27\include\site\python2.7\PyYAML:
running install
running build
running build_py
creating build
creating build\lib.win-amd64-2.7
creating build\lib.win-amd64-2.7\yaml
copying lib\yaml\composer.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\constructor.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\cyaml.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\dumper.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\emitter.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\error.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\events.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\loader.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\nodes.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\parser.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\reader.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\representer.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\resolver.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\scanner.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\serializer.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\tokens.py -> build\lib.win-amd64-2.7\yaml
copying lib\yaml\__init__.py -> build\lib.win-amd64-2.7\yaml
running build_ext
creating build\temp.win-amd64-2.7
creating build\temp.win-amd64-2.7\Release
checking if libyaml is compilable
error: [Error 2] The system cannot find the file specified
更新
我确实注意到,当我手动激活 virtualenv 并执行 "pip install pyyaml" 它失败并出现相同的错误。但是当我在常规命令提示符下,而不是 virtualenv,并执行相同的命令时,它安装正常。
所以这似乎是 pyyaml 和 virtualenv 的问题,但不是 tox 本身的问题。 另外,如果我在 tox.ini 中尝试使用 easy_install 命令,它会工作 w/o 任何问题。
[testenv]
install_command = easy_install {opts} {packages}
看起来二进制文件没有轮子,当 PIP 下载 PyYAML 时,它尝试构建它但不能。 我通过下载源代码、构建轮子然后将其上传到我的本地 devpi 服务器来为我的计算机修复此问题。然后我可以在 virtualenv 中使用 pip 安装它。 如果重要的话,我正在使用 Windows 10。
编辑 发现了问题。这需要安装。 VC for Python(这是2.7,但使用合适)https://www.microsoft.com/en-gb/download/details.aspx?id=44266