web-dev-qa-db-fra.com

Exécution de Cython sous Windows x64 - Erreur irrécupérable C1083: Impossible d'ouvrir le fichier d'inclusion: 'basetsd.h': Aucun fichier ni répertoire

J'ai essayé d'installer Cython for Python 2.7 sur mon système Windows 7. En particulier, je préfère tout en 64 bits. (Au cas où vous vous le demanderiez, j'ai besoin de Cython, car ce dernier est l'un des composants dont j'ai besoin pour un autre package permettant une analyse numérique spécialisée. Et x64 est potentiellement un avantage pour le stockage de grands ensembles de données.)

J'ai donc téléchargé le x64 Python 2.7 à partir du site officiel. Cython obtenu de Christoph Gohlke . La version AMD64 pour Python 2.7 bien sûr. Avant de procéder à l’installation, j’avais ajouté Python 2.7 dans le registre avec le fichier .reg qui se trouvait dans La réponse de Joe DF ici . Ensuite, j'ai installé le compilateur Visual C++ à partir de ici (je ne pense pas que cela fonctionne) et ici (mais celui-ci le devrait). À ce stade, j'ai dans mon répertoire C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin l'ensemble des vcvars32.bat, vcvars64.bat, vcvars86_AMD64.bat, vcvarsx86_ia64.bat. J'ai exécuté vcvars64.bat et il n'y avait aucun message d'erreur.

Par la suite, j'ai suivi cette page pour créer un fichier de test "hello world".

Ensuite, j'ai eu cette erreur.

...\Tests>python setup.py build_ext --inplace
running build_ext
building 'hello' extension
error: Unable to find vcvarsall.bat

Alors je me suis dit: Cython ne peut pas trouver ce fichier car il n’existe pas. (J'ai cherché tout mon disque dur.) J'ai donc copié vcvars64.bat de ...\VC\bin en \VC et changé le nom en vcvarsall.bat. Maintenant, l'erreur vcvarsall est partie. Et ... naturellement, une nouvelle erreur émerge.

...\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

Maintenant, je ne sais pas comment procéder. Que devrais-je faire? Votre aide est tres apprecie.

(Par souci de clarté, j'ai essayé de régler le compilateur sur Mingw32. Mais il existe d'autres erreurs. Je me concentre sur l'obtention de VC pour le moment.)


EDIT: J'ai essayé d'utiliser l'environnement de construction du kit de développement logiciel (SDK) CMD en suivant les instructions de cette page . J'ai reçu la même erreur.

24
Argyll

J'ai rencontré ce problème en essayant d'installer pandas en mode "développement". Je suis debout et je cours maintenant. Mon environnement:

  • Windows XP Pro x64 SP2
  • WinPython 64bit 2.7.5.3 (Python 2.7.5.AMD64) <-- "enregistré" en tant que distribution python du système à l'aide de l'application WinPython Control Panel

Problèmes rencontrés lors de l'exécution de python setup.py develop:

  • Impossible de trouver vcvarsall.bat
  • erreur fatale C1083: impossible d'ouvrir le fichier à inclure: 'basetsd.h': aucun fichier ou répertoire de ce type ... code de sortie 2

Solution: 

  1. Téléchargez et installez Microsoft Visual C++ 2008 Express.
  2. Téléchargez et installez le Kit de développement Microsoft Windows pour Windows 7 et .NET Framework 3.5 SP1. Vous aurez seulement besoin de:
    • Outils de développement> En-têtes et bibliothèques Windows <-- ceci vous donne basetsd.h
    • Outils de développement> Compilateurs Visual C++ <-- ceci vous donne les compilateurs 64 bits
  3. Copier C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.batto C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\AMD64\vcvarsamd64.bat. Observez le changement de nom de fichier.
  4. Ajoutez C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin à PATH. Cela n’est peut-être pas nécessaire (je l’ai fait avant de réinstaller le SDK avec Headers & Libs; la nécessité n’est donc pas connue).

À ce stade, l'exécution de python setup.py develop s'est terminée avec succès et python -c "import pandas; print pandas.__version__" a généré la balise git que j'attendais. 

[EDIT] Lectures complémentaires:

21
patricktokeeffe

Si quelqu'un (2017) est actuellement confronté à la même erreur avec les outils Visual C++ 2015, lancez à nouveau le programme d'installation et sélectionnez Windows 8.1/10 SDK en fonction de votre système d'exploitation. Cela corrigera l'erreur basestd.h.

S'il ne fonctionne toujours pas, essayez de lancer les outils de génération à partir de: Outils de génération C:\Program Files (x86)\Microsoft Visual C++.

Une autre alternative serait d'installer simplement anaconda 2 ou 3 (64 bits si vous ne voulez pas non plus d'erreur de mémoire). Il contient tous les paquets importants préconçus: sklearn, matplotlib, scipy, numpy, pandas et même des cadres de développement Web tels que flask.

19
Varun Garg

Pour ceux qui utilisent Windows 10, téléchargez le SDK de ici pour corriger le fichier d’en-tête basestd.h.

J'ai téléchargé le fichier .exe, installé et fonctionné à merveille. Le SDK faisait ~ 2,3 Go.

Note: Pour ceux comme moi avec des systèmes 64 bits qui ont une erreur supplémentaire:

`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

Il existe une excellente réponse ici qui résout le problème en plaçant le fichier rc.exe dans le bon dossier pour votre système.

4
Dermot McGrath

A titre de suggestion, vous pouvez l’essayer pour construire cython 64 bit avec setup.py

J'utilise Anaconda pour la distribution python, le SDK 7 de Windopws de Microsoft et MSVC 12.0.

Tout d'abord, je crée une bibliothèque pour ma fonction cuda, Deuxièmement, je lance python setup.py build_ext -i pour le dossier make temp (vous obtiendrez une erreur), Puis compilez le fichier Makefile ci-dessous,

Généralement, je l’obtiens de setup.py lorsqu’il s’agit de compiler une application 32 bits, puis de le changer pour une compilation 64 bits.

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)

Remarque:

  • MSVCRT.lib kernel32.lib sont facultatifs,
  • / EXPORT: initmy_cuda est obligatoire. Son format init% votrefichier_WO_Ext%
  • "/OUT:E:\my_cuda.pyd" pour déterminer votre emplacement de sortie, son nom de fichier et son extension.
1
Khalif21

Ajoutez-les aux répertoires d'installation de visual studio à vos variables d'environnement 

C:\Fichiers de programme (x86)\Microsoft Visual Studio 14.0\VC

C:\Fichiers de programme (x86)\Microsoft Visual Studio 14.0\VC\bin

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools

espérons que cela résoudra le problème.

0
Khan