webentwicklung-frage-antwort-db.com.de

Cython in Windows x64 ausführen - schwerwiegender Fehler C1083: Include-Datei kann nicht geöffnet werden: 'basetsd.h': Keine solche Datei oder Verzeichnis

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.

24
Argyll

Dieses Problem ist bei dem Versuch aufgetreten, pandas im Entwicklungsmodus zu installieren. Ich bin jetzt am Laufen. Meine Umgebung:

  • Windows XP Pro x64 SP2
  • WinPython 64bit 2.7.5.3 (Python 2.7.5.AMD64) <-- als Python-Distribution des Systems unter Verwendung der WinPython-Systemsteuerungsanwendung "registriert"

Probleme beim Ausführen von python setup.py develop:

  • Vcvarsall.bat konnte nicht gefunden werden
  • fataler Fehler C1083: Include-Datei kann nicht geöffnet werden: 'basetsd.h': Keine Datei oder Verzeichnis ... Exit-Code 2

Lösung: 

  1. Download und installieren Sie Microsoft Visual C++ 2008 Express.
  2. Download und installieren Sie Microsoft Windows SDK für Windows 7 und .NET Framework 3.5 SP1. Sie benötigen nur:
    • Entwickler-Tools> Windows-Header und -Bibliotheken <-- Sie erhalten basetsd.h.
    • Entwicklertools> Visual C++ - Compiler <-- Dies gibt Ihnen die 64-Bit-Compiler
  3. Kopieren Sie C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.batto nach C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\AMD64\vcvarsamd64.bat. Beachten Sie die Änderung des Dateinamens.
  4. Fügen Sie 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:

21
patricktokeeffe

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.

19
Varun Garg

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.

4
Dermot McGrath

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:

  • MSVCRT.lib kernel32.lib ist optional,
  • / EXPORT: initmy_cuda ist obligatorisch. Das Format init% deinDateiname_WO_Ext%
  • "/OUT:E:\my_cuda.pyd", um den Ausgabestandort, den Dateinamen und die Erweiterung zu bestimmen.
1
Khalif21

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.

0
Khan