我一直试图在我的Window 7系统上安装Cython for Python 2.7。 特别是,我更喜欢64位的一切。 (如果你想知道,我需要Cython,因为Cython是我需要的一个组件,用于一些专门的数值分析的另一个包,而x64对于大型数据集的存储可能是一个优势。
所以我从官方网站下载了x64 Python 2.7。 从Christoph Gohlke得到Cython 。 Python 2.7的amd64版本当然。 在我安装之前,我在这里添加了Python 2.7到registry中的。 之后,我从这里安装了Visual C ++编译器(我不认为它可行), 在这里 (但是这个应该)。 此时,我已经在我的C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin
目录下了所有的vcvars32.bat
, vcvars64.bat
, vcvars86_amd64.bat
, vcvarsx86_ia64.bat
。 我跑了vcvars64.bat
,没有错误信息。
随后,我跟着这个页面创build了一个“hello world”testing文件。
然后,我得到了这个错误。
...\Tests>python setup.py build_ext --inplace running build_ext building 'hello' extension error: Unable to find vcvarsall.bat
所以我想,自己:那么,Cython找不到那个文件,因为它不存在。 (我search了我的整个硬盘。)所以我将vcvars64.bat
从...\VC\bin
复制到\VC
,并将名称更改为vcvarsall.bat
。 现在vcvarsall错误消失了。 而且……自然会出现一个新的错误。
...\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
现在我不知道如何进行。 我该怎么办? 非常感谢您的帮助。
(为了清楚起见,我确实尝试了将编译器设置为Mingw32,但还有其他错误,我正专注于让VC现在工作。
编辑:我尝试使用SDK构build环境CMD按照此页面上的说明。 我收到了同样的错误。
我试图在“开发”模式下安装pandas
时遇到了这个问题。 我现在正在运行。 我的环境:
<--
“注册”为使用WinPython控制面板应用程序的系统python发行版 运行python setup.py develop
时遇到的问题python setup.py develop
:
解:
<--
这给你basetsd.h
<--
这为您提供了64位编译器 C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat
到C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
。 观察文件名称的变化。 C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin
到PATH
。 这可能不是必需的(我在重新安装带有Headers&Libs的SDK之前就这样做了;因此,这个必要性是未知的)。 此时,运行python setup.py develop
已经成功完成, python -c "import pandas; print pandas.__version__"
产生了我期望的git标签。
[编辑]更多阅读:
如果任何人目前(2017年)与Visual C ++ 2015工具面临同样的错误,请重新启动安装程序,并根据您的操作系统选择Windows 8.1 / 10 SDK。 这将修复basestd.h
错误。
如果仍然不能正常工作,请尝试从以下位置启动构建工具:C:\ Program Files(x86)\ Microsoft Visual C ++构建工具。
另一种方法是,只需安装2或3(64位,如果你不想要内存错误)。 它包含了所有重要的包:sklearn,matplotlib,scipy,numpy,熊猫,甚至Web开发框架,例如瓶子。
对于那些使用Windows 10,从这里下载SDK来修复头文件basestd.h
。
我下载的.exe,安装和工作很好。 SDK是〜2.3GB。
注意:对于像我这样的64位系统的人,有一个额外的错误:
`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
这里有一个很好的答案,通过将rc.exe
文件放入系统的正确文件夹来解决问题。
对于建议,你可以尝试使用setup.py来构建cython 64位
我正在使用Anaconda进行Python分发,Microsoft的Windopws SDK 7和MSVC 12.0。
首先,我为我的cuda函数创建库,其次,我运行python setup.py build_ext -i make temp文件夹(你将得到错误),然后编译下面的Makefile,
大多数情况下,我在编译32位应用程序时从setup.py中得到这个,然后把它改为编译的64位。
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)
注意: