2016-10-13 13 views
8

Właśnie zaczyna się uczyć cythona. Próbowałem skompilować prosty plik .pyx.Cython- Nie można otworzyć pliku include: "io.h": Brak takiego pliku lub katalogu

print("hello") 

Oto moje setup.py:

from distutils.core import setup 
from Cython.Build import cythonize 

setup(
    ext_modules = cythonize("hello.pyx") 
) 

Potem uruchom polecenie.

python setup.py build_ext --inplace 

Błąd jak poniżej. Walczę o to przy googlowaniu i nic mi nie pomoże.

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 

Czy ktoś może mi pomóc w rozwiązaniu tego błędu?

Mam zainstalowane Anaconda3 4.1.1, Python 3.5 i Visual Studio Express 2015.

To naprawdę frustrujące ...

+0

Cóż ... błąd zniknął po tym, jak odinstalowałem wszystkie oprogramowanie związane z Microsoftem i Pythonem i ponownie zainstalowałem Anaconę i VS2015 Express. Jednak pojawił się kolejny błąd ... – user2869934

Odpowiedz

9

W przypadku ktoś znajdzie ten wątek i szuka szybsze rozwiązanie niż ponowne zainstalowanie VS i/lub Anaconda - Udało mi się ominąć tego samego błędu przez zdefiniowanie zmiennej środowiskowej INCLUDE wskazuje na lokalizację io.h - pozwalając kompilatorowi VS zlokalizować nagłówek.

W mojej konfiguracji, używając VS2015, zmiana korzystania z Universal CRT oznacza lokalizację io.h jest C:\Program Files (x86)\Windows Kits\10\Include\<version>\ucrt. Dla różnych wersji/środowisk położenie pliku io.h może się różnić.

+0

Czy możesz wyjaśnić, gdzie zmienisz tę ścieżkę? Używam "Wiersza polecenia programu MSBuild Visual C++ 2015" – Atnas

+1

@Atnas Powinieneś być w stanie użyć polecenia 'SET' z poziomu zachęty. Alternatywnie, jeśli chcesz, aby się utrzymywał, możesz ustawić go za pomocą tego komputera/mojego komputera -> Ustawienia zaawansowane -> Zmienne środowiskowe i utworzyć nową zmienną systemową. –

6

Firma Microsoft nie podejmuje żadnych wysiłków, aby kroki rozwojowe konsoli były już oczywiste. Program Visual Studio od dawna jest pakowany z kilkoma plikami wsadowymi w celu ustanowienia zmiennych środowiskowych. Gdy opcje projektowania CLI języka C++ są zaznaczone w VS2015/2017, do menu Start dodano jeden lub więcej skrótów, aby wykonać te pliki wsadowe.

dla VS 2017 różne pliki wsadowe wszystkich połączeń:

C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\vcvarsall.bat 

ze specyficznymi parametrami.

Zamiast ustawiać zmienną systemową lub środowiskową użytkownika, lepiej jest wywołać konkretny plik wsadowy w celu spełnienia wymagań kompilacji.

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat 

lub

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat 

Jedną rzeczą, aby pamiętać, ze Python/Ruby/etc, skrypty często trzeba podnieść skorupę egzekucji do roli administratora w celu zainstalowania pakietów. Jeśli wykonasz plik wsadowy w powłoce niebędącej administratorem, a instalacja pakietu wymaga podniesienia, to spawn ją podpowłoką, która nie będzie zawierała zmiennych środowiskowych. Dlatego powinieneś uruchomić plik wsadowy w powłoce administratora przed wywołaniem menedżera pakietów lub skryptu.

5

Natknąłem się na ten sam problem - z bardzo podobną konfiguracją do twojej (tylko różnica: VS 2015 Pro). Po kilku tygodniach od pobrania kół od innych osób (np. http://www.lfd.uci.edu/~gohlke/pythonlibs/) w końcu znalazłem rozwiązanie, które działa dla mnie.

Wystąpiły 2 problemy.Problem 1 - musisz użyć "Developer Command Prompt" - czasami jest taki program w menu Start, po prostu go użyjesz.

(BTW, dla innych. Python 3.5 Potrzeby VS2015, nie jakakolwiek inna wersja edycja Wspólnota jest OK)

Jeśli nie, można użyć następującego fragmentu (w linii poleceń):

"%VS140COMNTOOLS%vsvars32.bat" 

lub nawet:

where cl >nul 2>nul || "%VS140COMNTOOLS%vsvars32.bat" 

(mam go w pliku wsadowym uruchomić mój build Environment)

(Jeśli nie masz zmiennej %VS140COMNTOOLS%, to może właśnie zainstalowałeś VS i potrzebujesz np. zrestartować, aby pojawiły się nowe zmienne środowiskowe).

Teraz dostaniesz błąd:

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 

(jak w edytowanej odpowiedzi)

Więc teraz uruchomić:

set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt 

OK, teraz dostaniesz błąd:

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 

Co teraz? Trzeba dodać katalogi biblioteczne:

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 

żadne błędy tym razem:

> 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 - Cała sprawa:

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 
+0

To zostało znalezione tutaj: https://devtalk.nvidia.com/default/topic/969047/cuda-8-vs2015-corecrt-h-error/?offset=7 - Użytkownicy PyCUDA mają ten sam problem. –

0

miałem ten sam problem rozwiązany poprzez zainstalowanie zestawu SDK systemu Windows 10.

0

Ten sam błąd wystąpił podczas próby zainstalowania pyshark i rozwiązałem ten problem, uruchamiając pip install pyshark w Developer Command Prompty for VS 2017 i upewniając się, że mam zainstalowane narzędzia VC++.

Powiązane problemy