问题
I have been trying to install Cython for Python 2.7 on my Window 7 system. In particular, I prefer everything in 64 bits. (In case you wonder, I need Cython because Cython is one of the components I need for another package for some specialized numerical analysis. And x64 is potentially an advantage for storage of large data sets.)
So I downloaded the x64 Python 2.7 from the official website. Got Cython from Christoph Gohlke. The amd64 version for Python 2.7 of course. Before I installed, I added Python 2.7 into the registry with the .reg
file found in Joe DF\'s answer here. Afterwards, I installed the Visual C++ compiler from here (I don\'t think it works) and here (but this one should). At this point, I have in my C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\bin
directory all of vcvars32.bat
, vcvars64.bat
, vcvars86_amd64.bat
, vcvarsx86_ia64.bat
. I ran vcvars64.bat
and there was no error message.
Subsequently, I followed this page to create a \"hello world\" test file.
Then, I got this error.
...\\Tests>python setup.py build_ext --inplace
running build_ext
building \'hello\' extension
error: Unable to find vcvarsall.bat
So I thought to myself: Well, Cython can\'t find that file because it does not exist. (I searched my whole harddrive for it.) So I copied vcvars64.bat
from ...\\VC\\bin
to \\VC
and changed the name to vcvarsall.bat
. Now vcvarsall error is gone. And ... naturally, a new error emerges.
...\\Tests>python setup.py build_ext --inplace
running build_ext
building \'hello\' extension
C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\BIN\\amd64\\cl.exe /c /nolog
o /Ox /MD /W3 /GS- /DNDEBUG -IC:\\Python27\\include -IC:\\Python27\\PC /Tchello.c /F
obuild\\temp.win-amd64-2.7\\Release\\hello.obj
hello.c
C:\\Python27\\include\\pyconfig.h(227) : fatal error C1083: Cannot open include fil
e: \'basetsd.h\': No such file or directory
error: command \'\"C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\BIN\\amd64
\\cl.exe\"\' failed with exit status 2
Now I have no idea how to proceed. What should I do? Your help is much appreciated.
(For clarity, I did try setting the compiler to Mingw32. But there are other errors. I am focusing on getting VC to work for now.)
EDIT: I tried using the SDK build environment CMD following the instructions on this page. I received the same error.
回答1:
In case anyone is currently (2017) facing same error with visual C++ 2015 tools, launch setup again and also select windows 8.1 / 10 SDK depending upon your OS. This will fix basestd.h
error.
If it is still not working, try launching build tools from: C:\Program Files (x86)\Microsoft Visual C++ Build Tools.
Another alternative would be, just install anaconda 2 or 3 (64 bit if also you don't want memory errors). It contains all the important packages prebuilt: sklearn, matplotlib, scipy, numpy, pandas and even web development frameworks such as flask.
回答2:
I encountered this problem while trying to install pandas
in 'develop' mode. I'm up & running now. My environment:
- Windows XP Pro x64 SP2
- WinPython 64bit 2.7.5.3 (Python 2.7.5.amd64)
<--
"registered" as system's python distro using WinPython Control Panel application
Problems encountered when running python setup.py develop
:
- Unable to find vcvarsall.bat
- fatal error C1083: Cannot open include file: 'basetsd.h': No such file or directory ... exit code 2
Solution:
- Download and install Microsoft Visual C++ 2008 Express.
- Download and install Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1. You will need only:
- Developer Tools > Windows Headers and Libraries
<--
this gives youbasetsd.h
- Developer Tools > Visual C++ Compilers
<--
this gives you the 64-bit compilers
- Developer Tools > Windows Headers and Libraries
- Copy
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat
toC:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
. Observe the change in file name. - Add
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin
toPATH
. This may not be required (I did so before re-installing the SDK w/ Headers & Libs; therefore, the necessity is unknown).
At this point, running python setup.py develop
completed successfully and python -c "import pandas; print pandas.__version__"
resulted in the git tag I expected.
[EDIT] Further reading:
- error: Unable to find vcvarsall.bat
- answer if you just want binaries to install
- answer if you want to compile on x64 machine
- answer about the file location/name change
- distutils issue 7511
回答3:
For those with Windows 10, download the SDK from here to fix the header file basestd.h
.
I downloaded the .exe, installed and worked great. SDK was ~2.3GB.
Note: For those like me with 64-bit systems who got an additional error:
`LINK : fatal error LNK1158: cannot run 'rc.exe'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1158
There is a great answer here which solves the problem by placing the rc.exe
file in the correct folder for your system.
回答4:
For suggestion, you can try it for build cython 64 bit with setup.py
I'm using Anaconda for python distribution, Microsoft's Windopws SDK 7, and MSVC 12.0.
Firstly, I make library for my cuda function, Second, I run python setup.py build_ext -i for make temp folder (you wil get error), then compile Makefile below,
Mostly, I get this from setup.py when it is compile 32 bit app, then change it for compile 64 bit.
Makefile
CL_EXE = "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\cl.exe"
LINK_EXE = "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\link.exe"
CL_FLAGS = /c /nologo /Ox /MD /W3 /GS- /DNDEBUG /O2 /fp:fast
CL_INC = -I. -I"C:\Program Files\Microsoft SDKs\Windows\v7.1\Include" \
-I"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include" -IC:\Users\name\Anaconda2\envs\py27\Lib\site-packages\numpy\core\include -IC:\Users\name\Anaconda2\envs\py27\include -IC:\Users\name\Anaconda2\envs\py27\PC
LINK_FLAGS = /DLL /nologo /INCREMENTAL:NO /MACHINE:X64
LINK_LIBPATH = "/LIBPATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64" \
/LIBPATH:C:\Users\name\Anaconda2\envs\py27\libs \
/LIBPATH:C:\Users\name\Anaconda2\envs\py27\PCbuild\amd64 \
/LIBPATH:C:\Users\name\Anaconda2\envs\py27\PC\VS9.0\amd64 \
"/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64" \
"/LIBPATH:C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64"
LINK_LIB = cuda_multiply4D.lib cudart.lib MSVCRT.lib kernel32.lib
LINK_EXPORT = /EXPORT:initmy_cuda
LINK_OBJ = build\temp.win-amd64-2.7\Release\my_cuda.obj
LINK_OUT = "/OUT:E:\my_cuda.pyd"
LINK_OTHER_CONF = /IMPLIB:build\temp.win-amd64-2.7\Release\my_cuda.lib /MANIFESTFILE:build\temp.win-amd64-2.7\Release\my_cuda.pyd.manifest
all:
$(CL_EXE) $(CL_FLAGS) $(CL_INC) /Tcmy_cuda.c /Fobuild\temp.win-amd64-2.7\Release\my_cuda.obj
$(LINK_EXE) $(LINK_FLAGS) $(LINK_LIBPATH) $(LINK_LIB) $(LINK_EXPORT) $(LINK_OBJ) $(LINK_OUT) $(LINK_OTHER_CONF)
Note:
- MSVCRT.lib kernel32.lib are optional,
- /EXPORT:initmy_cuda is mandatory. Its format init%yourfilename_WO_Ext%
- "/OUT:E:\my_cuda.pyd" for determine your output location, its filename, and its extension.
回答5:
Add these to the visual studio installation directories to your Environment variables
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools
hope it solves the issue.
来源:https://stackoverflow.com/questions/23691564/running-cython-in-windows-x64-fatal-error-c1083-cannot-open-include-file-ba