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, python3.5 и VS Express 2015.

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

4 Solutions collect form web for “Cython-Can not open include file: 'io.h': нет такого файла или каталога”

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

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

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

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

Я наткнулся на ту же проблему – с очень похожей конфигурацией по вашему (только разница: 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 

Ну … ошибка исчезла после того, как я удалил все программное обеспечение Microsoft и python и снова установил Anaconda и VS2015 Express. Однако произошла еще одна ошибка …

  • Пакет Cython с __init __. Pyx: Возможно?
  • Опции для кинематографического кода Cython
  • Получить значение указателя Cython
  • Как включить .pyx-файл в пакет python
  • Плохая (er) производительность Cython с памятью памяти NumPy по сравнению с массивами C
  • Быстрое (er) причудливое индексирование и сокращение?
  • Распространение исключения c ++ для исключения cython - python
  • Cython - преобразование указателей на массивы в объекты Python
  • Python - лучший язык программирования в мире.