我一直在尝试在我的Window 7系统上安装Cython for Python 2.7。特别是,我更喜欢64位的所有内容。 (如果你想知道,我需要Cython,因为Cython是我需要另一个软件包进行专门数值分析所需的组件之一。而x64可能是存储大型数据集的一个优势。)
所以我从官方网站下载了x64 Python 2.7。从Christoph Gohlke获得了Cython。当然,Python 2.7的amd64版本。在安装之前,我使用Joe DF's answer here中的.reg
文件将Python 2.7添加到注册表中。之后,我安装了来自here的Visual C ++编译器(我认为它不起作用)和here(但这个应该是)。此时,我的C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin
目录中有vcvars32.bat
,vcvars64.bat
,vcvars86_amd64.bat
,vcvarsx86_ia64.bat
。我跑vcvars64.bat
并且没有错误消息。
随后,我跟着this page创建了一个“hello world”测试文件。
然后,我收到了这个错误。
...\Tests>python setup.py build_ext --inplace
running build_ext
building 'hello' extension
error: Unable to find vcvarsall.bat
所以我心想:嗯,Cython找不到那个文件,因为它不存在。 (我搜索了我的整个硬盘。)所以我将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工作。)
编辑:我按照this page上的说明尝试使用SDK构建环境CMD。我收到了同样的错误。
答案 0 :(得分:21)
我尝试在“开发”中安装pandas
时遇到此问题。模式。我是& up;现在跑我的环境:
<--
&#34;已注册&#34;作为系统的使用WinPython控制面板应用程序的python发行版运行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&amp; Libs的SDK之前这样做了;因此,必要性是未知的。)此时,运行python setup.py develop
已成功完成,python -c "import pandas; print pandas.__version__"
生成了我预期的git标记。
[编辑] 进一步阅读:
答案 1 :(得分:20)
如果任何人目前(2017)在使用Visual C ++ 2015工具时遇到相同的错误,请再次启动安装程序,并根据您的操作系统选择Windows 8.1 / 10 SDK。这将解决basestd.h
错误。
如果仍然无效,请尝试从以下位置启动构建工具:C:\ Program Files(x86)\ Microsoft Visual C ++ Build Tools。
另一种选择是,只需安装anaconda 2或3(64位,如果你也不想要内存错误)。它包含了所有预先构建的重要软件包:sklearn,matplotlib,scipy,numpy,pandas甚至web开发框架,如flask。
答案 2 :(得分:4)
对于使用Windows 10的用户,请从here下载SDK以修复标头文件this.locationRequest = new LocationRequest();
this.locationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
this.locationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
this.locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(this.locationRequest);
this.locationSettingsRequest = builder.build();
this.locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult); // why? this. is. crazy. Android.
Location currentLocation = locationResult.getLastLocation();
GPSPoint gpsPoint = new GPSPoint(currentLocation.getLatitude(),
currentLocation.getLongitude());
Log.i(TAG, "Location Callback results: " + gpsPoint);
if (null != workable)
workable.work(gpsPoint);
}
};
this.mFusedLocationClient =
LocationServices.getFusedLocationProviderClient(MainApplication.getAppContext());
this.mFusedLocationClient.requestLocationUpdates(this.locationRequest,
this.locationCallback, Looper.myLooper());
。
我下载了.exe,安装并且工作得很好。 SDK大约是2.3GB。
注意:对于像我这样有64位系统的用户会遇到其他错误:
basestd.h
有一个很好的答案here通过将`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
文件放在系统的正确文件夹中来解决问题。
答案 3 :(得分:1)
有关建议,您可以尝试使用setup.py
构建cython 64位我正在使用Anaconda进行python发布,使用Microsoft的Windopws SDK 7和MSVC 12.0。
首先,我为我的cuda函数创建库, 其次,我为make temp文件夹运行python setup.py build_ext -i(你会得到错误), 然后在下面编译Makefile,
大多数情况下,我在setup.py中编译32位应用程序,然后将其更改为64位编译。
生成文件
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)
注意:
答案 4 :(得分:0)
将这些添加到Visual Studio安装目录中的环境变量
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
希望它可以解决问题。
答案 5 :(得分:0)
我可以通过从这个链接下载并安装最新的 Windows 10 SDK 来解决这个问题: https://software-download.microsoft.com/download/pr/19041.685.201201-2105.vb_release_svc_prod1_WindowsSDK.iso
但是(cpython)出现了另一个问题:
error C2039: 'exc_type': is not a member of '_ts'
我可以通过在
中声明额外的指针来解决(...\python38\include\cpython\pystate.h)
我在第 77 行找到了这些:
/* The exception currently being raised */
PyObject *curexc_type;
PyObject *curexc_value;
PyObject *curexc_traceback;
我在它们之后添加以下内容(没有前三个字母“cur”):
/* The exception currently being raised */
PyObject *exc_type;
PyObject *exc_value;
PyObject *exc_traceback;