it-swarm.dev

Uruchamianie Cythona w Windows x64 - błąd krytyczny C1083: Nie można otworzyć pliku include: 'basetsd.h': Brak takiego pliku lub katalogu

Próbowałem zainstalować Cython dla Pythona 2.7 w moim systemie Windows 7. W szczególności wolę wszystko w 64 bitach. (Jeśli zastanawiasz się, potrzebuję Cythona, ponieważ Cython jest jednym ze składników potrzebnych do innego pakietu do specjalistycznej analizy numerycznej. A x64 jest potencjalnie zaletą dla przechowywania dużych zestawów danych)

Pobrałem więc x64 Python 2.7 z oficjalnej strony. Got Cython from Christoph Gohlke . Oczywiście wersja AMD64 dla Pythona 2.7. Zanim zainstalowałem, dodałem Pythona 2.7 do rejestru z plikiem .reg znalezionym w odpowiedzi Joe DF tutaj . Następnie zainstalowałem kompilator Visual C++ z tutaj (chyba nie działa) i tutaj (ale ten powinien). W tym momencie mam w moim katalogu C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin wszystkie z vcvars32.bat, vcvars64.bat, vcvars86_AMD64.bat, vcvarsx86_ia64.bat. Uruchomiłem vcvars64.bat i nie było komunikatu o błędzie.

Następnie śledziłem tę stronę , aby utworzyć plik testowy „Witaj świecie”.

Wtedy dostałem ten błąd.

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

Pomyślałem sobie: Cython nie może znaleźć tego pliku, ponieważ nie istnieje. (Szukałem w nim całego dysku twardego.) Więc skopiowałem kod vcvars64.bat z ...\VC\bin na \VC i zmieniłem nazwę na vcvarsall.bat. Teraz zniknął błąd vcvarsall. I ... naturalnie pojawia się nowy błąd.

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

Teraz nie mam pojęcia, jak postępować. Co powinienem zrobić? Twoja pomoc jest bardzo ceniona.

(Dla jasności spróbowałem ustawić kompilator na Mingw32. Ale są też inne błędy. Skupiam się na tym, aby na razie VC pracować.)


EDYCJA: Próbowałem użyć środowiska SDK do budowania CMD postępując zgodnie z instrukcjami na tej stronie . Otrzymałem ten sam błąd.

24
Argyll

Problem ten napotkałam podczas próby zainstalowania pandas w trybie „rozwijaj”. Jestem gotowy i działa teraz. Moje środowisko:

  • Windows XP Pro x64 SP2
  • WinPython 64bit 2.7.5.3 (Python 2.7.5.AMD64) <-- "zarejestrowany" jako systemowa dystrybucja Pythona przy użyciu aplikacji WinPython Control Panel

Napotkane problemy podczas uruchamiania python setup.py develop:

  • Nie można znaleźć vcvarsall.bat
  • błąd krytyczny C1083: Nie można otworzyć pliku include: 'basetsd.h': Brak takiego pliku lub katalogu ... kod wyjścia 2

Rozwiązanie: 

  1. Pobierz i zainstaluj Microsoft Visual C++ 2008 Express.
  2. Pobierz i zainstaluj pakiet Microsoft Windows SDK dla Windows 7 i .NET Framework 3.5 SP1. Będziesz potrzebował tylko:
    • Narzędzia dla programistów> Nagłówki i biblioteki Windows <-- to daje basetsd.h
    • Narzędzia dla programistów> Kompilatory Visual C++ <-- to 64-bitowe kompilatory
  3. Kopiuj 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. Obserwuj zmianę nazwy pliku.
  4. Dodaj C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin do PATH. Może to nie być wymagane (zrobiłem to przed ponowną instalacją SDK w/Headers & Libs; dlatego konieczność nie jest znana).

W tym momencie uruchomienie python setup.py develop zakończyło się pomyślnie, a python -c "import pandas; print pandas.__version__" spowodowało oczekiwanie znacznika git. 

[EDIT] Dalsze czytanie:

21
patricktokeeffe

Jeśli ktokolwiek jest obecnie (2017) w obliczu tego samego błędu z wizualnymi narzędziami C++ 2015, uruchom ponownie instalację, a także wybierz zestaw SDK systemu Windows 8.1/10 w zależności od systemu operacyjnego. To naprawi błąd basestd.h.

Jeśli nadal nie działa, spróbuj uruchomić narzędzia do budowania z: C: Program Files (x86) Microsoft Visual C++ Build Tools.

Inną alternatywą byłoby zainstalowanie anacondy 2 lub 3 (64-bitowa, jeśli nie chcesz błędów pamięci). Zawiera wszystkie gotowe pakiety: sklearn, matplotlib, scipy, numpy, pandy, a nawet frameworki do tworzenia stron internetowych, takie jak flask.

19
Varun Garg

Dla tych z Windows 10 pobierz SDK z tutaj , aby naprawić plik nagłówkowy basestd.h.

Pobrałem plik .exe, zainstalowałem i działałem świetnie. SDK miał ~ 2,3 GB.

Uwaga: Dla osób takich jak ja w systemach 64-bitowych, które otrzymały dodatkowy błąd:

`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

Jest świetna odpowiedź tutaj która rozwiązuje problem, umieszczając plik rc.exe we właściwym folderze dla twojego systemu.

4
Dermot McGrath

Aby zasugerować, możesz wypróbować go dla kompilacji 64-bitowego cythona z setup.py

Używam Anacondy do dystrybucji python, Microsoft Windopws SDK 7 i MSVC 12.0.

Po pierwsze, tworzę bibliotekę dla mojej funkcji cuda, .__ Po drugie, uruchamiam python setup.py build_ext -i dla folderu make temp (otrzymasz błąd), .__, a następnie skompiluj Makefile poniżej,

Przeważnie otrzymuję to z pliku setup.py, gdy jest to kompilacja 32-bitowej aplikacji, a następnie zmieniam ją na 64-bitową kompilację.

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)

Uwaga:

  • MSVCRT.lib kernel32.lib są opcjonalne,
  • / EXPORT: initmy_cuda jest obowiązkowe. Jego format init% yourfilename_WO_Ext%
  • „/OUT:E:Moje_cuda.pyd” do określenia lokalizacji wyjściowej, nazwy pliku i jego rozszerzenia.
1
Khalif21

Dodaj je do katalogów instalacyjnych Visual Studio do zmiennych środowiskowych 

C: Program Files (x86) Microsoft Visual Studio 14.0 VC

C: Program Files (x86) Microsoft Visual Studio 14.0 VC bin

C: Program Files (x86) Microsoft Visual Studio 14.0 Wspólne 7 Narzędzia

mam nadzieję, że to rozwiąże problem.

0
Khan