Cython-Can not open include file: 'io.h': нет такого файла или каталога

Просто начинаем изучать 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.

Это действительно расстраивает...

Ответ 1

В случае, если кто-то найдет этот поток и ищет более быстрое решение, чем переустановка VS и/или Anaconda - мне удалось пройти эту же ошибку, указав переменную среды INCLUDE, указав на местоположение of io.h - позволяет компилятору VS находить заголовок.

В моей настройке, используя VS2015, переход на использование универсальной ЭЛТ означает, что местоположение io.h равно C:\Program Files (x86)\Windows Kits\10\Include\<version>\ucrt. Для разных версий/сред расположение io.h может отличаться.

Ответ 2

Скачайте Visual Studio инструменты для сборки и установите

  1. Visual C++ Основные возможности инструментов сборки.
  2. V C++ 2017 v141 toolset (x86, x64)
  3. Visual C++ 2017 г. Распространяемое обновление
  4. Windows 10 SDK (10.0.16299.0) для рабочего стола C++

enter image description here

Ответ 3

Microsoft не прилагает никаких усилий, чтобы сделать шаги разработки консоли более очевидными. Visual Studio уже давно упакована с некоторыми пакетными файлами, чтобы установить переменные среды. Когда параметры разработки С++ CLI выбраны в VS2015/2017, для запуска этих пакетных файлов в меню "Пуск" есть одна или несколько ярлыков.

Для VS 2017 различные командные файлы все звонят:

C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\vcvarsall.bat

с определенными параметрами.

Вместо того, чтобы устанавливать переменную System или User Environment Variable, было бы лучше вызвать конкретный командный файл для удовлетворения ваших потребностей сборки.

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, для установки пакетов часто требуется поднять оболочку выполнения на роль администратора. Если вы выполняете командный файл в оболочке не-Администратора, а установка пакета требует повышения, она будет порождать подоболочку, которая не будет иметь переменных окружения. Поэтому перед вызовом диспетчера пакетов или script вы должны запустить командный файл в оболочке администратора.

Ответ 4

Я наткнулся на ту же проблему - с очень похожей конфигурацией по вашему (только разница: VS 2015 Pro). Через несколько недель, просто загрузив колеса с других людей (например, http://www.lfd.uci.edu/~gohlke/pythonlibs/), я наконец нашел решение, которое работает для меня.

Есть 2 проблемы. Проблема 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

Что теперь? Вам нужно добавить библиотеку dirs:

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

Ответ 5

У меня была такая же проблема, она была решена путем установки Windows 10 SDK.

Ответ 6

Я получил ту же ошибку при попытке установить pyshark, и я решил эту проблему, запустив pip install pyshark в Developer Command Prompty for VS 2017 и убедившись, что у меня установлены инструменты VС++.

Ответ 7

Добавьте Windows 10 SDK в путь к вашей среде.

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

  1. применить изменения.
  2. откройте новую командную строку с правами администратора.

ошибка должна быть удалена.

Ответ 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>

Для разных версий Windows и Visual Studio эти пути могут немного отличаться. Лучший способ получить их - при возникновении ошибки поиск файла с

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

Ответ 9

Это можно решить, добавив include dirs и dir библиотеки следующим образом:

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

Это потому, что для Cython требуются библиотеки, предоставляемые Windows SDK. Чтобы это исправить, сделайте следующее:

  1. Установите инструменты сборки для Visual Studio 2019. Загрузите отсюда. Build Tools for Visual Studio 2019 download page
  2. Запустите установочные файлы VS Build Tools (vs_buildtools.exe). Выберите:
    • Инструменты сборки MSVC (MSVC v142 - VS 2019 C++ x64/x86 build tools)
    • Windows 10 SDK Build Tools for Visual Studio 2019 installation
  3. Установите VS Build Tools, для этого потребуется около 3 ГБ пространства.
  4. В меню "Пуск" запустите командную строку разработчика для VS 2019. Developer Command Prompt for VS 2019
  5. Перейдите в каталог разработки Cython и запустите: python setup.py build_ext --inplace

Надеюсь, это решит вашу проблему.