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 инструменты для сборки и установите
- Visual C++ Основные возможности инструментов сборки.
- V C++ 2017 v141 toolset (x86, x64)
- Visual C++ 2017 г. Распространяемое обновление
- 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
- применить изменения.
- откройте новую командную строку с правами администратора.
ошибка должна быть удалена.
Ответ 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. Чтобы это исправить, сделайте следующее:
- Установите инструменты сборки для Visual Studio 2019. Загрузите отсюда.
![Build Tools for Visual Studio 2019 download page]()
- Запустите установочные файлы 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]()
- Установите VS Build Tools, для этого потребуется около 3 ГБ пространства.
- В меню "Пуск" запустите командную строку разработчика для VS 2019.
![Developer Command Prompt for VS 2019]()
- Перейдите в каталог разработки Cython и запустите:
python setup.py build_ext --inplace
Надеюсь, это решит вашу проблему.