刚开始学习cython。 我试图编译一个简单的.pyx文件。
print("hello")
这是我的setup.py:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("hello.pyx")
)
然后我运行命令。
python setup.py build_ext --inplace
错误如下。我一直在谷歌搜索它,没有任何帮助来找我。
running build_ext
building 'hello' extension
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\Jackie\AppData\Local\Continuum\Anaconda3\include -IC:\Users\Jackie\AppData\Local\Continuum\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\wdf\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\winrt" /Tchello.c /Fobuild\temp.win32-3.5\Release\hello.obj
hello.c
c:\users\jackie\appdata\local\continuum\anaconda3\include\pyconfig.h(68): fatal error C1083: Cannot open include file: 'io.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\cl.exe' failed with exit status 2
有人可以帮我解决错误吗?
我安装了Anaconda3 4.1.1,Python 3.5和Visual Studio Express 2015。
真的很令人沮丧......
答案 0 :(得分:22)
如果有人发现这个帖子并且正在寻找比重新安装VS和/或Anaconda更快的解决方案 - 我能够通过定义指向该位置的环境变量 INCLUDE 来克服同样的错误io.h - 允许VS编译器找到标头。
在我的设置中,使用VS2015,对使用Universal CRT的更改意味着io.h的位置为C:\Program Files (x86)\Windows Kits\10\Include\<version>\ucrt
。
对于不同的版本/环境,io.h的位置可能不同。
答案 1 :(得分:19)
答案 2 :(得分:10)
微软不再努力使控制台开发步骤显而易见。 Visual Studio早已与一些批处理文件打包在一起以建立环境变量。在VS2015 / 2017中选择C ++ CLI开发选项时,会在开始菜单中添加一个或多个快捷方式来执行这些批处理文件。
对于VS 2017,各种批处理文件都调用:
C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\vcvarsall.bat
具有特定参数。
最好不要设置系统或用户环境变量,而是调用特定的批处理文件以满足您的构建需求。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat
或
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat
要记住Python / Ruby / etc的一件事,脚本通常需要将执行shell提升为管理员角色才能安装包。如果在非管理员shell中执行批处理文件,并且程序包安装需要提升,则会生成一个不具有环境变量的子shell。因此,您应该在调用包管理器或脚本之前在管理员shell中运行批处理文件。
答案 3 :(得分:7)
我偶然发现了同样的问题 - 与你的配置非常相似(唯一不同的是:VS 2015 Pro)。几个星期后,只需要从其他人那里下载轮子(例如http://www.lfd.uci.edu/~gohlke/pythonlibs/),我终于找到了适合我的解决方案。
有两个问题。问题1 - 您需要使用“开发人员命令提示符” - 有时在“开始”菜单中有这样的程序,然后您只需使用它。
(BTW,对于其他人:Python 3.5需要VS2015,而不是任何其他版本。社区版本可以)
如果没有,您可以使用以下代码段(在命令行中):
"%VS140COMNTOOLS%vsvars32.bat"
甚至:
where cl >nul 2>nul || "%VS140COMNTOOLS%vsvars32.bat"
(我在批处理文件中运行我的构建环境)
(如果您没有%VS140COMNTOOLS%
变量,那么您可能只是安装了VS,并且需要重新启动,以便新的环境变量可见。
现在您将收到错误:
c:\program files\anaconda3\include\pyconfig.h(68): fatal error C1083: Cannot open include file: 'io.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\cl.exe' failed with exit status 2
(如您编辑的答案)
所以现在运行:
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
好的,现在你会收到错误:
LINK : fatal error LNK1104: cannot open file 'ucrt.lib'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1104
现在怎么办?您需要添加库目录:
set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
这次没有错误:
> dir
05/16/2017 11:33 AM 69,240 hello.c
05/16/2017 11:47 AM 15,872 hello.cp35-win_amd64.pyd
05/16/2017 11:32 AM 17 hello.pyx
(...)
TL; DR - 整件事:
where cl >nul 2>nul || "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" amd64
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
python setup.py build_ext --inplace
答案 4 :(得分:3)
我遇到了同样的问题,通过安装Windows 10 SDK解决了这个问题。
答案 5 :(得分:1)
我在尝试安装pyshark
时收到了同样的错误,我通过在pip install pyshark
中运行Developer Command Prompty for VS 2017
并确保安装了VC ++工具来解决了这个问题。
答案 6 :(得分:1)
如果有人尝试在Git Bash
中进行安装时遇到此错误(我想这对于使用Bash
编译器在Windows
上运行的任何Visual Studio
shell也有效),那么您可以执行以下操作:
INCLUDE="C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/ucrt/;C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/shared/" \
> LIB="C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/ucrt/x64;C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/um/x64" \
> PATH=$PATH:/c/Program\ Files\ \(x86\)/Windows\ Kits/10/bin/10.0.17763.0/x64 \
> python -m pip install <package>
对于Windows
和Visual Studio
的不同版本,这些路径可能略有不同。最好的获取方法是抛出错误时,使用
find /c/Program\ Files\ \(x86\)/ -name <name_of_error_causing_file>
答案 7 :(得分:1)
除了bob发布的列表中的项目外,安装Universal CRT SDK还可以解决我的问题,因此列表变为:
答案 8 :(得分:0)
在您的环境路径中添加Windows 10 SDK。
C:\ Program Files(x86)\ Windows Kits \ 10 \ Include \\ ucrt
该错误应消除。
答案 9 :(得分:0)
可以通过添加包含目录和库目录来解决此问题,如下所示:
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt;E:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared;E:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\onecore\x64;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64;C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64
set LIB=E:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\onecore\x64;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
如果这样,您现在遇到问题:rc.exe可能会运行链接错误;
您还需要将rc.exe和rc.dll(x64)复制到与运行link.exe
答案 10 :(得分:0)
这是因为Cython需要Windows SDK提供的库。 要解决此问题,请执行以下操作:
python setup.py build_ext --inplace
希望这可以解决您的问题。
答案 11 :(得分:0)
答案 12 :(得分:0)
答案 13 :(得分:0)
我试图在Windows 10和VS2017上移植并构建pycocotools,并遇到相同的错误:“找不到io.h”。
要弄清楚为什么找不到“ io.h”,终端输出可能会提示,即如何指定包含目录。就我而言,使用的是错误版本的Windows 10 SDK:
-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt
代替
-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt
没有C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt
(但是有C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0
)。
最后,在控制面板中,我删除了Windows Driver Kit 18362
(通过VS2019安装,但后来又删除了VS2019,并且此18362并未完全卸载),并且解决了“找不到io.h”问题。
让我说得更清楚:
ucrt
文件夹),也会选择最新的版本,从而导致类似“ io.h not found”的错误。答案 14 :(得分:0)
如果有人在安装openstack或任何其他需要python或pip的应用程序时遇到任何问题(或netifaces,oslo.utils,python-cinderclient,msgpack,oslo.serialization,python-novaclient,PyYAML ,pyperclip,colorama,pyreadline,attrs,wcwidth,cmd2,悬崖,pycparser,cffi,加密,装饰器,requestionsexceptions,jsonpointer,jsonpatch,munch,jmespath,dogpile.cache,appdirs,OpenStack SDK,rfc3986,oslo.config,python- keystoneclient,osc-lib),并且也使用 Visual Studio -请按照以下步骤操作:
- 安装python 3.8.5
- Pip是使用python自动安装的
- 重新启动系统(非常重要)
- 输入cmd以安装任何应用程序:示例:pip install python-openstackclient
答案 15 :(得分:0)
我在尝试安装pyhook 1.5.1时遇到了这个烦人的错误。 当我
是的!而且有效。