web-dev-qa-db-fra.com

Cython - Impossible d'ouvrir le fichier d'inclusion: 'io.h': Aucun fichier ou répertoire de ce type

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

21
user2869934

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. 

20
Calum Atkinson

Télécharger Outils de construction de Visual Studio et installer

  1. Visual C++ Build Tools fonctionnalités principales.
  2. Jeu d'outils VC++ 2017 v141 (x86, x64)
  3. Mise à jour redistribuable de Visual C++ 2017
  4. Kit de développement logiciel (SDK) Windows 10 (10.0.16299.0) pour Desktop C++

 enter image description here

18
bob

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.

9
Justin Kirk

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
7
Tomasz Gandor

J'ai eu le même problème, résolu en installant Windows 10 SDK.

2
Amr Ashraf

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.

1
Kcvin

Ajoutez Windows 10 sdk dans votre chemin d’environnement.

C:\Program Files (x86)\Kits Windows\10\Include \\ ucrt

  1. appliquer les modifications.
  2. ouvrez une nouvelle commande Invite avec droits d'administrateur.

l'erreur devrait être supprimée.

0
Khan