Подтвердить что ты не робот

Запуск Cython в Windows x64 - фатальная ошибка C1083: невозможно открыть файл include: basetsd.h: нет такого файла или каталога

Я пытаюсь установить Cython для Python 2.7 на мою систему Window 7. В частности, я предпочитаю все в 64 бит. (В случае, если вам интересно, мне нужен Cython, потому что Cython является одним из компонентов, которые мне нужны для другого пакета для некоторого специализированного численного анализа. И x64 потенциально является преимуществом для хранения больших наборов данных.)

Итак, я загрузил x64 Python 2.7 с официального сайта. Получил Cython от Кристоф Гольке. Конечно, версия amd64 для Python 2.7. Прежде чем я установил, я добавил Python 2.7 в реестр с файлом .reg, найденным в Joe DF answer here. Впоследствии я установил компилятор Visual С++ из здесь (я не думаю, что он работает) и здесь (но это нужно). На данный момент у меня в каталоге C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin все vcvars32.bat, vcvars64.bat, vcvars86_amd64.bat, vcvarsx86_ia64.bat. Я запустил vcvars64.bat и не было сообщения об ошибке.

Впоследствии я выполнил эту страницу, чтобы создать тестовый файл "hello world".

Затем я получил эту ошибку.

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

Итак, я подумал про себя: ну, Cython не может найти этот файл, потому что его не существует. (Я искал весь свой жесткий диск для этого.) Поэтому я скопировал vcvars64.bat от ...\VC\bin до \VC и изменил имя на vcvarsall.bat. Теперь ошибка vcvarsall исчезла. И... естественно, появляется новая ошибка.

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

Теперь я понятия не имею, как действовать. Что мне делать? Ваша помощь очень ценится.

(Для ясности я попытался установить компилятор в Mingw32, но есть и другие ошибки. Я сосредоточен на том, чтобы заставить VC работать сейчас.)


EDIT: я попытался использовать среду сборки SDK CMD, следуя инструкциям на этой странице. Я получил ту же ошибку.

4b9b3361

Ответ 1

Я столкнулся с этой проблемой при попытке установить pandas в режиме разработки. Я сейчас работаю. Моя среда:

  • Windows XP Pro x64 SP2
  • WinPython 64bit 2.7.5.3 (Python 2.7.5.amd64) <-- "зарегистрирован" как системный дистрибутив python с помощью WinPython Control Панельное приложение

Проблемы при запуске python setup.py develop:

  • Не удалось найти vcvarsall.bat
  • Неустранимая ошибка C1083: Не удается открыть файл include: basetsd.h: Нет такого файла или каталога... Код выхода 2

Решение:

  • Загрузить и установить Microsoft Visual С++ 2008 Express.
  • Download и установите пакет Microsoft Windows SDK для Windows 7 и .NET Framework 3.5 с пакетом обновления 1 (SP1). Вам понадобится только:
    • Средства разработчикa > Заголовки и библиотеки Windows <-- это дает вам basetsd.h
    • Инструменты для разработчиков > Компиляторы Visual С++ <-- это дает вам 64-разрядные компиляторы
  • Скопировать C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat до C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat. Обратите внимание на изменение имени файла.
  • Добавить C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin в PATH. Это может не потребоваться (я сделал это до повторной установки SDK с заголовками и ликами, поэтому необходимость неизвестна).

На этом этапе выполнение python setup.py develop завершено успешно и python -c "import pandas; print pandas.__version__" привело к ожидаемому тегу git.

[EDIT] Дальнейшее чтение:

Ответ 2

В случае, если кто-то в настоящий момент (2017) сталкивается с такой же ошибкой с визуальными инструментами С++ 2015, снова запустите установку, а также выберите Windows 8.1/10 SDK в зависимости от вашей ОС. Это исправит ошибку basestd.h.

Если он все еще не работает, попробуйте запустить инструменты сборки из: C:\Program Files (x86)\Microsoft Visual С++ Build Tools.

Другой альтернативой было бы просто установить anaconda 2 или 3 (64 бит, если вы также не хотите ошибок памяти). Он содержит все готовые пакеты: sklearn, matplotlib, scipy, numpy, pandas и даже веб-разработки, такие как фляга.

Ответ 3

Для тех, у кого есть Windows 10, загрузите SDK из здесь, чтобы исправить файл заголовка basestd.h.

Я загрузил .exe, установил и работал отлично. SDK был ~ 2,3 ГБ.

Примечание. Для таких, как я, с 64-битными системами, которые получили дополнительную ошибку:

`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

Здесь отличный ответ , который решает проблему, поместив файл rc.exe в правильную папку для вашей системы.

Ответ 4

Для предложения вы можете попробовать его для сборки cython 64 бит с setup.py

Я использую Anaconda для распространения python, Microsoft Windopws SDK 7 и MSVC 12.0.

Во-первых, я создаю библиотеку для моей функции cuda, Во-вторых, я запускаю python setup.py build_ext -i для создания временной папки (вы получите ошибку), затем скомпилируйте Makefile ниже,

В основном, я получаю это от setup.py, когда он компилирует 32-битное приложение, а затем меняет его для компиляции 64-разрядной версии.

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)

Примечание:

  • MSVCRT.lib kernel32.lib являются необязательными,
  • /ЭКСПОРТ: initmy_cuda является обязательным. Его формат init% yourfilename_WO_Ext%
  • "/OUT: E:\my_cuda.pyd" для определения вашего местоположения вывода, его имени файла и его расширения.