Запуск 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, следуя инструкциям на этой странице. Я получил ту же ошибку.
Ответы
Ответ 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" для определения вашего местоположения вывода, его имени файла и его расширения.