Je commençais tout juste à apprendre cython ... Je tentais de compiler un simple fichier.
print("hello")
Voici mon setup.py:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("hello.pyx")
)
Puis je lance la commande.
python setup.py build_ext --inplace
L'erreur comme ci-dessous. J'ai du mal à le googler et rien d'utile ne m'est venu.
running build_ext
building 'hello' extension
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Users\Jackie\AppData\Local\Continuum\Anaconda3\include -IC:\Users\Jackie\AppData\Local\Continuum\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\wdf\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\winrt" /Tchello.c /Fobuild\temp.win32-3.5\Release\hello.obj
hello.c
c:\users\jackie\appdata\local\continuum\anaconda3\include\pyconfig.h(68): fatal error C1083: Cannot open include file: 'io.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\cl.exe' failed with exit status 2
Quelqu'un peut-il m'aider à résoudre l'erreur, s'il vous plaît?
Anaconda3 4.1.1, Python 3.5 et Visual Studio Express 2015 sont installés.
C'est vraiment frustrant ...
Si quelqu'un trouve ce fil et recherche une solution plus rapide que la réinstallation de VS et/ou d'Anaconda, j'ai pu résoudre cette erreur en définissant la variable d'environnementINCLUDEen indiquant l'emplacement de io.h. - permettre au compilateur VS de localiser l'en-tête.
Dans ma configuration, à l'aide de VS2015, le passage à l'utilisation de CRT universel signifie que l'emplacement de io.h est C:\Program Files (x86)\Windows Kits\10\Include\<version>\ucrt
. Pour différentes versions/environnements, l'emplacement de io.h peut différer.
Télécharger Outils de construction de Visual Studio et installer
Microsoft ne fait plus aucun effort pour rendre les étapes de développement de la console plus évidentes. Visual Studio est depuis longtemps empaqueté avec certains fichiers de commandes pour établir des variables d’environnement. Lorsque les options de développement de la CLI C++ sont sélectionnées dans VS2015/2017, un ou plusieurs raccourcis ont été ajoutés au menu Démarrer pour exécuter ces fichiers de traitement par lots.
Pour VS 2017, les différents fichiers de commandes appellent tous:
C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\vcvarsall.bat
avec des paramètres spécifiques.
Plutôt que de définir une variable d'environnement système ou utilisateur, il serait préférable d'appeler le fichier de commandes spécifique pour répondre à vos besoins de génération.
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat
ou
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat
Une chose à garder à l'esprit avec Python/Ruby/etc., les scripts devront souvent élever le rôle d'exécution Shell en tant qu'administrateur afin d'installer des packages. Si vous exécutez le fichier de commandes dans un shell non-administrateur et que l'installation du package nécessite une élévation, il créera un sous-shell qui n'aura pas les variables d'environnement. Par conséquent, vous devez exécuter le fichier de commandes dans un shell administrateur avant d'appeler le gestionnaire de packages ou le script.
Je suis tombé sur le même problème - avec une configuration très similaire à la vôtre (seule différence: VS 2015 Pro). Après quelques semaines sur le téléchargement de fichiers d'autres personnes (par exemple, http://www.lfd.uci.edu/~gohlke/pythonlibs/ ), j'ai finalement trouvé une solution qui fonctionne pour moi.
Il y a 2 problèmes. Problème 1 - vous devez utiliser "Invite de commandes du développeur" - il existe parfois un programme de ce type dans le menu Démarrer, alors vous ne l'utilisez que.
(BTW, pour les autres: Python 3.5 nécessite VS2015, pas une autre version. L'édition de communauté est OK)
Sinon, vous pouvez utiliser l'extrait suivant (en ligne de commande):
"%VS140COMNTOOLS%vsvars32.bat"
ou même:
where cl >nul 2>nul || "%VS140COMNTOOLS%vsvars32.bat"
(je l'ai dans un fichier de commandes pour exécuter mon environnement de construction)
(Si vous ne possédez pas la variable %VS140COMNTOOLS%
, vous avez peut-être simplement installé le VS et vous devez, par exemple, le redémarrer pour que les nouvelles variables d'environnement deviennent visibles).
Maintenant, vous obtiendrez l'erreur:
c:\program files\anaconda3\include\pyconfig.h(68): fatal error C1083: Cannot open include file: 'io.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_AMD64\\cl.exe' failed with exit status 2
(comme dans votre réponse modifiée)
Alors maintenant, lancez:
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
OK, maintenant vous aurez l'erreur:
LINK : fatal error LNK1104: cannot open file 'ucrt.lib'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_AMD64\\link.exe' failed with exit status 1104
Et maintenant? Vous devez ajouter des répertoires de bibliothèque:
set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
Pas d'erreur cette fois-ci:
> dir
05/16/2017 11:33 AM 69,240 hello.c
05/16/2017 11:47 AM 15,872 hello.cp35-win_AMD64.pyd
05/16/2017 11:32 AM 17 hello.pyx
(...)
TL; DR - le tout:
where cl >nul 2>nul || "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" AMD64
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
python setup.py build_ext --inplace
J'ai eu le même problème, résolu en installant Windows 10 SDK.
J'ai reçu la même erreur en essayant d'installer pyshark
et j'ai résolu ce problème en exécutant pip install pyshark
dans Developer Command Prompty for VS 2017
et en m'assurant que les outils VC++ étaient installés.
Ajoutez Windows 10 sdk dans votre chemin d’environnement.
C:\Program Files (x86)\Kits Windows\10\Include \\ ucrt
l'erreur devrait être supprimée.