Reputation: 1599
I was trying to compile a simple .pyx file using Cython.
print("hello")
Here's my setup.py:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("hello.pyx")
)
Then I run the command.
python setup.py build_ext --inplace
The error is shown below. I've struggled on googling it but found nothing helpful.
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
Can someone help me to resolve the error, please?
I have Anaconda3 4.1.1, Python 3.5, and Visual Studio Express 2015 installed.
Upvotes: 117
Views: 209869
Reputation: 341
If installing the Build Tools didn't solve the problem, adding/editing 3 system environment variables will probably do
Depending on the versions of the build tools you installed, you might have to modify the paths a bit:
MSVC v143 - VS 2022 C++-x64/x86-Buildtools
and Windows 11 SDK (10.0.22000.0)
. The exact versions are probably not that important.INCLUDE
with (adjust to your versions) value C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared
. The first directory should contain e.g. io.h
and corecrt_wio.h
, the second should contain e.g. basetsd.h
.LIB
with value
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\ucrt\x64
.C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86
to the system env. var. Path
. This directory should contain rcdll.dll
and rc.exe
.As Felipe Araya Olea pointed out, installing the Build Tools alone might not suffice due to restricted access to the registry when you're e.g. working on a company computer. However, the above steps solved the problem for me.
Upvotes: 5
Reputation: 4478
For those on Windows 10 22H2 looking to build wheels under Python 3.12, download Visual Studio 2022 Build Tools vs_BuildTools.exe, and then select
* MSVC v143 - VS 2022 C++ x64/x86 Build Tools (latest)
* Windows 10 SDK (latest version)
For those on Windows 11 23H2, similarly select
* MSVC v143 - VS 2022 C++ x64/x86 Build Tools (latest)
* Windows 11 SDK (latest version)
Upvotes: 2
Reputation: 1758
Update
if you have Visual Studio 2022 no need to download VS Build Tools, as you can use for the same purpose Visual Studio Installer (located in VS2022 start menu folder)
As pointed out by JfredoJ
You need windows 10 SDK, Download visual studio build tools and install
Upvotes: 164
Reputation: 1217
check folder d:\New folder
is accessible because Windows 10 SDK, Download Visual Studio Build tools needs that folder for temp files and errors are as described in these questions if it is not available.
Upvotes: 0
Reputation: 1
I had this annoying error while I was trying to install pyhook 1.5.1. It worked when I
Yeasss! and it worked.
Upvotes: -2
Reputation: 1
if anyone has any issues with installing openstack or any other applications that require python or pip (or netifaces, oslo.utils, python-cinderclient, msgpack, oslo.serialization, python-novaclient, PyYAML, pyperclip, colorama, pyreadline, attrs, wcwidth, cmd2, cliff, pycparser, cffi, cryptography, decorator, requestsexceptions, jsonpointer, jsonpatch, munch, jmespath, dogpile.cache, appdirs, OpenStack SDK, rfc3986, oslo.config, python-keystoneclient, osc-lib), and also that uses Visual studio - follow the below steps:
- Install python 3.8.5
- Pip is installed automatically with python
- reboot the system (very important)
- enter the cmd to install any app: example: pip install python-openstackclient
Upvotes: -2
Reputation: 119
In addition to the items in the list posted by bob, installing Universal CRT SDK solved the issue for me, so the list becomes:
Upvotes: 4
Reputation: 2181
I was trying to transplant and build pycocotools on Windows 10 with VS2017, and meet same error: "io.h not found".
To figure out why "io.h" was not found, the terminals output may give hints, i.e. how the including directory are specified. In my case, wrong version of Windows 10 SDK is used:
-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt
instead of
-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt
and there's no C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt
(but there is C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0
).
Finally, in control panel, I removed Windows Driver Kit 18362
(which was installed via VS2019 but VS2019 was removed later, and this 18362 is not totally uninstalled), and the problem "io.h not found" is solved.
Let me make it more clear:
ucrt
folder for including files), the newest one will be picked, which causing "io.h not found" similar error.Upvotes: 0
Reputation: 151
I solved the issue by adding the below packages in Desktop development with C++
Upvotes: 2
Reputation: 31
Upvotes: 0
Reputation: 1092
This is because Cython require libraries provided by Windows SDK. To fix this, do the following:
python setup.py build_ext --inplace
Hopefully this will fix your problem.
Upvotes: 12
Reputation: 101
It can be solved by adding include dirs and library dirs as follow:
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
and if then you are now getting a problem: link error can run with rc.exe;
you also need copy rc.exe and rc.dll (x64) to the dir which is the same with the running link.exe
Upvotes: 10
Reputation: 13682
If anyone is running into this error while trying to install in Git Bash
(I imagine this would also work for any Bash
shell running on Windows
using the Visual Studio
compiler), then you can do the following:
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>
For different versions of Windows
and Visual Studio
these paths may be slightly different. The best way to get them is when an error is thrown, search for the file with
find /c/Program\ Files\ \(x86\)/ -name <name_of_error_causing_file>
Upvotes: 5
Reputation: 1498
Add windows 10 sdk in your environment path.
C:\Program Files (x86)\Windows Kits\10\Include\\ucrt
the error should be removed.
Upvotes: 1
Reputation: 5163
I received the same error when trying to install pyshark
and I resolved this issue by running pip install pyshark
in Developer Command Prompty for VS 2017
and making sure I had VC++ tools installed.
Upvotes: 1
Reputation: 8833
I stumbled upon the same problem - with very similar configuration to yours (only difference: VS 2015 Pro). After a few weeks on just having to download wheels from other people (e.g. http://www.lfd.uci.edu/~gohlke/pythonlibs/) I finally found a solution which works for me.
There are 2 problems. Problem 1 - you need to use "Developer Command Prompt" - sometimes there is such a program in Start Menu, then you just use it.
(BTW, for others: Python 3.5 needs VS2015, not any other version. Community edition is OK)
If not, you can use the following snippet (in command line):
"%VS140COMNTOOLS%vsvars32.bat"
or even:
where cl >nul 2>nul || "%VS140COMNTOOLS%vsvars32.bat"
(i have it in a batch file to run my build environment)
(If you dont have the %VS140COMNTOOLS%
variable, then maybe you just installed the VS and you need e.g. to restart, so that new environment variables become visible).
Now you will get the error:
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
(as in your edited answer)
So now run:
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
OK, now you will get the error:
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
What now? You need to add library 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
No errors this time:
> 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 - the whole thing:
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
Upvotes: 26
Reputation: 141
Microsoft doesn't make any effort to make console development steps obvious anymore. Visual Studio has long been packaged with some batch files to establish environment variables. When the C++ CLI development options are selected in VS2015/2017, there are one or more shortcuts added to the start menu to execute these batch files.
For VS 2017 the various batch files all call:
C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\vcvarsall.bat
with specific parameters.
Rather than setting a System or User Environment Variable, it would be better to call the specific batch file to meet your build needs.
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat
or
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat
One thing to bear in mind with Python/Ruby/etc, scripts will often need to elevate the execution shell to Administrator role in order to install packages. If you execute the batch file in a non-Administrator shell, and the package installation requires elevation it will spawn a subshell which will not have the environment variables. Therefore, you should run the batch file in an Administrator shell before calling the package manager or script.
Upvotes: 14
Reputation: 421
In case anyone finds this thread and is looking for a quicker solution than reinstalling VS and/or Anaconda - I was able to get past this same error by defining the environment variable INCLUDE pointing to the location of io.h - allowing the VS compiler to locate the header.
In my setup, using VS2015, the change to using the Universal CRT means the location of io.h is C:\Program Files (x86)\Windows Kits\10\Include\<version>\ucrt
.
For different versions/environments the location of io.h may differ.
Upvotes: 32