Cython-无法打开包含文件:“io.h”:没有这样的文件或目录Cython-无法打开包含文件:“

2019-05-12 01:10发布

刚开始学习用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

如下错误。 我已经在Google上搜寻它的斗争并没有什么有益的来找我。

    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年安装的。

这是很无奈...

Answer 1:

如果任何人发现这个线程,并正在寻找一种更快的解决方案比重新安装VS和/或蟒蛇-我能够通过定义环境变量,让过去同样的错误包含分别指向io.h的位置-让VS编译器定位头。

在我的设置,使用VS2015,变化到使用通用CRT装置io.h的位置为C:\Program Files (x86)\Windows Kits\10\Include\<version>\ucrt 。 对于不同的版本/环境io.h的位置可以不同。



Answer 2:

下载的Visual Studio构建工具和安装

  1. VISUAL C ++编译工具的核心功能。
  2. VC ++ 2017 V141工具集(X86,X64)
  3. VISUAL C ++ 2017年可再发行组件更新
  4. 的Windows 10 SDK(10.0.16299.0)的桌面C ++



Answer 3:

微软并没有做任何努力去取得明显控制台开发步骤了。 Visual Studio中一直被打包了一些批处理文件来建立环境变量。 当C ++ CLI开发选项VS2015 / 2017年被选中,也有添加到开始菜单中执行这些批处理文件的一个或多个快捷键。

对于2017年VS各种批处理文件所有的呼叫:

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。 因此,你应该叫包管理器或脚本之前运行在管理员外壳的批处理文件。



Answer 4:

我偶然发现了同样的问题 - 非常类似的配置到你的(唯一的区别:2015年VS专业版)。 在刚刚不得不从其他人下载车轮几周后(如http://www.lfd.uci.edu/~gohlke/pythonlibs/ )我终于找到了这对我的作品的解决方案。

有2个问题。 问题1 - 你需要使用“开发人员命令提示符” - 有时是在开始菜单这样的程序,那么你只需要使用它。

(顺便说一句,为他人:Python的3.5需要VS2015,没有任何其他版本的社区版是OK)

如果没有,你可以使用下面的代码片段(命令行):

"%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

OK,现在你会得到错误:

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


Answer 5:

我有同样的问题,通过安装Windows 10 SDK解决它。



Answer 6:

我在尝试安装时同样的错误pyshark和我通过运行解决了这个问题pip install pysharkDeveloper Command Prompty for VS 2017 ,并确保我已经安装了VC ++工具。



Answer 7:

添加Windows 10 SDK环境中的路径。

C:\ Program Files文件(x86)的\的Windows套件\ 10 \包含\\ ucrt

  1. 应用更改。
  2. 打开一个新的命令提示符具有管理员权限。

应该被删除的错误。



Answer 8:

如果有人遇到了这个错误,而试图在安装Git Bash (我想这也将为任何工作Bash上运行外壳Windows使用Visual Studio编译器),那么你就可以做到以下几点:

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>

对于不同版本WindowsVisual Studio这些路径可能略有不同。 让他们最好的办法是,当发生错误时,搜索与文件

find /c/Program\ Files\ \(x86\)/ -name <name_of_error_causing_file>


文章来源: Cython- Cannot open include file: 'io.h': No such file or directory
标签: python cython