Ich habe versucht, Cython for Python 2.7 auf meinem Windows 7-System zu installieren. Insbesondere bevorzuge ich alles in 64 Bit. (Falls Sie sich fragen, ich brauche Cython, weil Cython eine der Komponenten ist, die ich für ein anderes Paket für eine spezielle numerische Analyse benötige. Und x64 ist möglicherweise ein Vorteil für die Speicherung großer Datensätze.)
Also habe ich den x64 Python 2.7 von der offiziellen Website heruntergeladen. Got Cython von Christoph Gohlke . Die AMD64-Version für Python 2.7 natürlich. Vor der Installation habe ich Python 2.7 mit der .reg
-Datei in der Registry in Joe DFs Antwort hier hinzugefügt. Danach installierte ich den Visual C++ - Compiler von hier (ich glaube nicht, dass es funktioniert) und hier (aber dies sollte). An diesem Punkt habe ich in meinem C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin
-Verzeichnis alle vcvars32.bat
, vcvars64.bat
, vcvars86_AMD64.bat
, vcvarsx86_ia64.bat
. Ich lief vcvars64.bat
und es gab keine Fehlermeldung.
Anschließend folgte ich dieser Seite , um eine Testdatei "Hallo Welt" zu erstellen.
Dann bekam ich diesen Fehler.
...\Tests>python setup.py build_ext --inplace
running build_ext
building 'hello' extension
error: Unable to find vcvarsall.bat
Also dachte ich mir: Nun, Cython kann diese Datei nicht finden, weil sie nicht existiert. (Ich habe meine gesamte Festplatte danach durchsucht.) Also habe ich vcvars64.bat
von ...\VC\bin
nach \VC
kopiert und den Namen in vcvarsall.bat
geändert. Nun ist der vcvarsall-Fehler weg. Und ... natürlich taucht ein neuer Fehler auf.
...\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
Jetzt habe ich keine Ahnung, wie ich vorgehen soll. Was soll ich machen? Deine Hilfe ist sehr Willkommen.
(Der Klarheit halber habe ich versucht, den Compiler auf Mingw32 zu setzen. Es gibt jedoch andere Fehler. Ich konzentriere mich darauf, VC erst einmal zum Laufen zu bringen.)
BEARBEITEN: Ich habe versucht, die SDK-Build-Umgebung CMD gemäß den Anweisungen auf dieser Seite zu verwenden. Ich habe den gleichen Fehler erhalten.
Dieses Problem ist bei dem Versuch aufgetreten, pandas
im Entwicklungsmodus zu installieren. Ich bin jetzt am Laufen. Meine Umgebung:
<--
als Python-Distribution des Systems unter Verwendung der WinPython-Systemsteuerungsanwendung "registriert"Probleme beim Ausführen von python setup.py develop
:
Lösung:
<--
Sie erhalten basetsd.h
.<--
Dies gibt Ihnen die 64-Bit-CompilerC:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat
to nach C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\AMD64\vcvarsamd64.bat
. Beachten Sie die Änderung des Dateinamens.C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin
zu PATH
hinzu. Dies ist möglicherweise nicht erforderlich (ich habe dies vor der Neuinstallation des SDK mit Headers & Libs getan; daher ist die Notwendigkeit nicht bekannt).An diesem Punkt wurde die Ausführung von python setup.py develop
erfolgreich abgeschlossen und python -c "import pandas; print pandas.__version__"
führte zu dem git-Tag, das ich erwartet hatte.
[EDIT] Weiterführende Literatur:
Falls für jeden Benutzer (2017) derselbe Fehler bei den visuellen C++ 2015-Tools auftritt, starten Sie das Setup erneut und wählen Sie je nach Betriebssystem Windows 8.1/10 SDK aus. Dies wird basestd.h
Fehler beheben.
Wenn es immer noch nicht funktioniert, starten Sie die Build-Tools von: C:\Programme (x86)\Microsoft Visual C++ Build Tools.
Eine andere Alternative wäre, einfach Anaconda 2 oder 3 zu installieren (64 Bit, wenn auch keine Speicherfehler gewünscht werden). Es enthält alle wichtigen vorgefertigten Pakete: sklearn, matplotlib, scipy, numpy, pandas und sogar Webentwicklungs-Frameworks wie flask.
Laden Sie für diejenigen mit Windows 10 das SDK von here herunter, um die Header-Datei basestd.h
zu reparieren.
Ich habe die .exe heruntergeladen, installiert und großartig gearbeitet. Das SDK betrug ~ 2,3 GB.
Hinweis: Für diejenigen, die wie ich mit 64-Bit-Systemen einen zusätzlichen Fehler erhalten haben:
`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
Es gibt eine großartige Antwort hier , die das Problem löst, indem die rc.exe
-Datei im richtigen Ordner für Ihr System abgelegt wird.
Als Vorschlag können Sie es mit setup.py für die Erstellung von 64-Bit-Cython versuchen
Ich verwende Anaconda für die Python-Verteilung, das Microsoft Windopws SDK 7 und MSVC 12.0.
Erstens mache ich eine Bibliothek für meine cuda-Funktion Zweitens führe ich python setup.py build_ext -i für den temporären Ordner aus (Sie erhalten einen Fehler), Kompiliert dann das Makefile unten.
Meistens bekomme ich dies von setup.py, wenn es sich um eine 32-Bit-App handelt, und dann für 64-Bit-Compile ändern.
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)
Hinweis:
Fügen Sie diese zu den Visual Studio-Installationsverzeichnissen zu Ihren Umgebungsvariablen hinzu
C:\Programme (x86)\Microsoft Visual Studio 14.0\VC
C:\Programme (x86)\Microsoft Visual Studio 14.0\VC\bin
C:\Programme (x86)\Microsoft Visual Studio 14.0\Common7\Tools
hoffe es löst das Problem.