【问题标题】:Cannot open include file: 'io.h': No such file or directory无法打开包含文件:'io.h':没有这样的文件或目录
【发布时间】:2017-02-22 10:11:13
【问题描述】:

我试图使用 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。

【问题讨论】:

  • 嗯...在我卸载了所有 Microsoft 和 python 相关软件并再次安装 Anaconda 和 VS2015 Express 后,错误消失了。然而,另一个错误出现了......

标签: python cython


【解决方案1】:

您需要 Windows 10 SDK, 下载visual studio build tools并安装

  1. Visual C++ 构建工具的核心功能。
  2. MSVC 工具集 C++ 2019 v142 (x86,x64)
  3. Visual C++ 2019 可再发行更新
  4. 适用于桌面 C++ 的 Windows 10 SDK (10.0.17763.0)

【讨论】:

  • 这是为我做的!尤其是用于桌面 C++ 的 Windows 10 SDK 是关键。
  • 如果您使用的是 Windows Server 2016,则需要 Windows 10 SDK (10.0.15063.0) for Desktop C++ [x86 and x64]
  • 如果您使用的是 Windows 7,还需要选择“Windows 10 SDK”选项。
  • 2019年12月官方MS链接:visualstudio.microsoft.com/downloads/…
  • 没有帮助我。仍然“无法打开包含文件:'io.h':没有这样的文件或目录”
【解决方案2】:

如果有人找到此线程并正在寻找比重新安装 VS 和/或 Anaconda 更快的解决方案 - 我可以通过定义指向该位置的环境变量 INCLUDE 来克服同样的错误io.h - 允许 VS 编译器定位头文件。

在我的设置中,使用 VS2015,更改为使用通用 CRT 意味着 io.h 的位置是 C:\Program Files (x86)\Windows Kits\10\Include\<version>\ucrt。 对于不同的版本/环境,io.h 的位置可能不同。

【讨论】:

  • 您能否说明您更改此路径的位置?我正在使用“Visual C++ 2015 MSBuild 命令提示符”
  • @Atnas 您应该能够在提示符中使用SET 命令。或者,如果您希望它持续存在,您可以通过此 PC/我的电脑 -> 高级设置 -> 环境变量并创建一个新的系统范围变量来设置它。
  • 这对我有用,但后来我得到一个错误:cannot open include file: ‘Ws2_32.lib’ 有谁知道如何解决这个问题?
【解决方案3】:

我偶然发现了同样的问题 - 与您的配置非常相似(唯一的区别:VS 2015 Pro)。经过几周不得不从其他人(例如http://www.lfd.uci.edu/~gohlke/pythonlibs/)下载轮子后,我终于找到了适合我的解决方案。

有两个问题。问题1 - 你需要使用“开发者命令提示符” - 有时开始菜单中有这样的程序,然后你就使用它。

(顺便说一句,对于其他人:Python 3.5 需要 VS2015,而不是任何其他版本。社区版还可以)

如果没有,可以使用下面的sn -p(在命令行中):

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

【讨论】:

  • 这是在这里找到的:devtalk.nvidia.com/default/topic/969047/… - PyCUDA 用户也有同样的问题。
  • 这个解决方案正是我想要的。我一直在尝试应用许多不同的解决方案来解决这个问题。如果您在运行"%VS140COMNTOOLS%vsvars32.bat" 时遇到问题并显示"Cannot determine the location of the VS Common Tools folder." 错误,很可能您使用的是公司的笔记本电脑并且您的访问权限受到限制,您可以尝试reg query 1 进行验证,如果显示为Registry editing has been disabled by your administrator.,则这就是问题
【解决方案4】:

Microsoft 不再努力使控制台开发步骤变得显而易见。 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 中运行批处理文件。

【讨论】:

    【解决方案5】:

    这是因为 Cython 需要 Windows SDK 提供的库。 要解决此问题,请执行以下操作:

    1. 为 Visual Studio 2019 安装构建工具。从 here 下载。
    2. 运行 VS Build Tools 安装文件 (vs_buildtools.exe)。选择:
      • MSVC 构建工具(MSVC v142 - VS 2019 C++ x64/x86 构建工具)
      • Windows 10 SDK
    3. 安装 VS Build Tools,它需要大约 3 GB 的空间。
    4. 从“开始”菜单,运行 VS 2019 的开发人员命令提示符。
    5. 转到您的 Cython 开发目录,然后运行:python setup.py build_ext --inplace

    希望这能解决您的问题。

    【讨论】:

      【解决方案6】:

      可以通过添加包含目录和库目录来解决,如下所示:

      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 相同的目录中

      【讨论】:

      • 无法理解为什么这个答案如此被低估,只有这个才能巧妙地解决这个问题。非常感谢!
      【解决方案7】:

      我遇到了同样的问题,通过安装 Windows 10 SDK 解决了。

      【讨论】:

        【解决方案8】:

        如果有人在尝试安装Git Bash 时遇到此错误(我想这也适用于使用Visual Studio 编译器在Windows 上运行的任何Bash 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>
        

        对于WindowsVisual Studio 的不同版本,这些路径可能略有不同。获取它们的最佳方法是在抛出错误时,使用

        搜索文件
        find /c/Program\ Files\ \(x86\)/ -name <name_of_error_causing_file>
        

        【讨论】:

        • 我们到底应该在哪里做这个?我正在使用 git bash,但无法 pip 安装一些库。
        • 真的很希望有人能回答这个问题。
        【解决方案9】:

        我通过在Desktop development with C++

        中添加以下包解决了这个问题

        【讨论】:

        • 我在 python 中并尝试使用 pip install 安装精美的 impute 但我收到以下错误(无法打开包含文件:'io.h')。我正在尝试下载 Windows SDK 并添加环境变量的路径,但同样失败
        • 我该如何解决?我认为这是同样的错误
        【解决方案10】:

        除了bob发布的列表中的项目,安装通用CRT SDK为我解决了这个问题,所以列表变为:

        1. Visual C++ 构建工具的核心功能。
        2. VC++ 2017 v141 工具集(x86、x64)
        3. Visual C++ 2017 可再发行更新
        4. 适用于桌面 C++ 的 Windows 10 SDK (10.0.16299.0)
        5. Windows 通用 CRT SDK

        【讨论】:

        • 您可以在他的解决方案下发表评论。这更像是重复的。
        • 我想,但似乎我必须有 50 个声望才能评论他的答案,而我没有那么多。
        • 我需要更多。我运行 Visual Studio Installer -> Visual Studio Build Tools 2019。它预选:C++ BUILD TOOLS C++ Build Tools 核心功能 C++ 2019 Redistributable Update C++ 核心桌面功能 可选 MSVC v142 - VS 2019 C++ x64/x86 构建工具 (v14.28) Windows 10 SDK (10.0.18362.0) 适用于 Windows 的 C++ CMake 工具 测试工具 核心功能 - 构建工具 C++ AddressSanitizer (Experimental) MSVC v140 - VS 2015 C++ 构建工具 (v14.00) 独立组件 Windows 通用 CRT SDK MSVC v140 - VS 2015 C++ 构建工具 (v14.00)
        【解决方案11】:

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

        【讨论】:

          【解决方案12】:

          在您的环境路径中添加 windows 10 sdk。

          C:\Program Files (x86)\Windows Kits\10\Include\\ucrt

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

          错误应该被删除。

          【讨论】:

            【解决方案13】:
            1. 如果您在系统中安装了任何其他“Visual Studio Build Tools”,请卸载。
            2. 重新启动系统。
            3. 从以下 URL 下载“Build Tools for Visual Studio 2019”并安装它。 网址:https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019 EXE:vs_buildtools__559949468.1570880854.exe
            4. 重新启动系统。
            5. 以管理员模式打开 CMD,并尝试安装 py 包。我在安装 pyahocorasickpyodbc 包等时遇到问题。
            6. 安装上述工具后,检查您的添加删除程序。 Screenshot of Add remove programs in Control Panel

            【讨论】:

              【解决方案14】:

              我试图在带有 VS2017 的 Windows 10 上移植和构建 pycocotools,并遇到相同的错误:“io.h not found”。

              要弄清楚为什么找不到“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 not found”的问题就解决了。


              让我说得更清楚:

              • Windows SDK 10.0.17763.0 通过 VS2017 引入
              • Windows SDK 10.0.18362.0 通过 VS2019 引入 当 Windows SDK 有多个版本时(即使它的目录不包含 ucrt 包含文件的文件夹),会选择最新的一个,导致“io.h not found”类似的错误。

              【讨论】:

                【解决方案15】:

                检查文件夹 d:\New folder 是否可访问,因为 Windows 10 SDK、下载 Visual Studio 构建工具需要该文件夹来存放临时文件,如果该文件夹不可用,则错误如这些问题中所述。

                【讨论】:

                  【解决方案16】:

                  如果有人在安装 openstack 或任何其他需要 python 或 pip 的应用程序时遇到任何问题(或 netifaces、oslo.utils、python-cinderclient、msgpack、oslo.serialization、python-novaclient、PyYAML , pyperclip, colorama, pyreadline, attrs, wcwidth, cmd2, 悬崖, pycparser, cffi, 密码学, 装饰器, requestsexceptions, jsonpointer, jsonpatch, munch, jmespath, dogpile.cache, appdirs, OpenStack SDK, rfc3986, oslo.config, python- keystoneclient、osc-lib),以及使用 Visual Studio - 请按照以下步骤操作:

                  1. 安装python 3.8.5
                  2. Pip 是用 python 自动安装的
                  3. 重启系统(非常重要)
                  4. 输入 cmd 安装任何应用程序:例如:pip install python-openstackclient

                  【讨论】:

                  • 这对我有用。希望它也适用于其他人。
                  【解决方案17】:

                  我在尝试安装 pyhook 1.5.1 时遇到了这个烦人的错误。 当我工作时它起作用了

                  1. 安装windows10 SDK(我用的是windows10)
                  2. 在管理员模式下运行 Visual Studio x64 命令提示符。
                  3. 洗个冷水澡。
                  4. 最后我按下回车键。

                  是的!并且成功了。

                  【讨论】:

                    猜你喜欢
                    • 2019-05-30
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-07-04
                    • 2013-11-05
                    • 2014-05-07
                    相关资源
                    最近更新 更多