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

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

Итак, я скачал x64 Python 2.7 с официального сайта. Получил Cython от Кристофа Голке. Конечно, версия amd64 для Python 2.7. Перед установкой я добавил Python 2.7 в реестр с файлом .reg, найденным в Ответ Джо Д.Ф. здесь. Впоследствии я установил компилятор Visual C ++ с здесь ( Я не думаю, что это работает) и здесь ( а вот этот должен). На данный момент у меня есть в моем 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 работал.)


РЕДАКТИРОВАТЬ: Я попытался использовать CMD среды сборки SDK, следуя инструкциям на этой странице. Я получил ту же ошибку.


person Argyll    schedule 16.05.2014    source источник
comment
Надеюсь, это поможет.   -  person Mehraban    schedule 16.05.2014
comment
Привет, Сэм, я знаю переменную VS90COMNTOOLS. Cython фактически сначала ищет каталог VC, прежде чем перейти к VS90COMNTOOLS. И, по крайней мере, на начальных этапах сборки Cython может найти компоненты VC, как описано в тексте вопроса. Однако, спасибо.   -  person Argyll    schedule 16.05.2014
comment
Вы проверили (а), что файл установлен и где и (б) что компилятор включает, используя / showincludes, и, наконец, (в) подтвердили, что элемент не скрыт директивой компилятора? Если вы проверите cl.exe help /? тогда вы сможете сделать гораздо более подробным.   -  person Preet Sangha    schedule 21.05.2014
comment
Привет, Привет, я только что не обнаружил ни basetsd.h, ни windows.h (другой файл заголовка, упомянутый на странице построения программы C ++. msdn.microsoft.com/en-us/library/z7kx322x.aspx) Интересно, а почему   -  person Argyll    schedule 21.05.2014


Ответы (6)


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

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

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

person Varun Garg    schedule 06.03.2017
comment
Я выбрал опцию win8.1 в Windows 7. pandas собрана нормально. Спасибо. - person Winand; 01.04.2017
comment
Это помогло мне с 32-битной Windows 10 для установки Geemusic requirements.txt. Работал после того, как установил Windows 10 SDK. Спасибо ;) - person Volodymyr Kotylo; 09.04.2017
comment
В частности, помогла установка опции заголовков Windows! - person Tony Sepia; 17.07.2017
comment
2018. Не могу поверить в это, но установка win 10 sdk 64 устранила мою проблему с basestd.h и позволила мне установить scikit-image. - person jonincanada; 13.02.2018
comment
2021. Я тоже не могу в это поверить, но установка win 10 sdk 64 устранила мою проблему с basestd.h и позволила мне установить pybullet. - person AverageHomosapien; 08.04.2021

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

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

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

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

Решение:

  1. Загрузите и установите Microsoft Visual C ++ 2008 Express.
  2. Download and install Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1. You will need only:
    • Developer Tools > Windows Headers and Libraries <-- this gives you basetsd.h
    • Инструменты разработчика> Компиляторы Visual C ++ <-- это дает вам 64-битные компиляторы.
  3. Скопируйте 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. Обратите внимание на изменение имени файла.
  4. Добавьте 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] Дополнительная литература:

person patricktokeeffe    schedule 09.09.2014
comment
Это потрясающе. Кстати, знаете ли вы, где \ как загрузить Windows SDK для Windows 7 напрямую, без веб-установщика? - person Lucas Soares; 28.10.2017
comment
Извини, @LucasSoares, я не знаю, где ты можешь это найти - person patricktokeeffe; 09.10.2018

Для пользователей 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 в папку, соответствующую вашей системе.

person Dermot McGrath    schedule 02.07.2017
comment
Сервер дата-центра Anaconda + windows - это единственное сработавшее решение. Вот настоящая ошибка: Найден исполняемый файл C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ BIN \ x86_amd64 \ cl.exe geometry.cc:\programdata\anaconda3\include\pyconfig.h(222): фатальный ошибка C1083: не удается открыть включаемый файл: 'basetsd.h': нет такого файла или каталога - person MPV; 15.08.2017
comment
Это было полезно, но мне также нужно было скопировать файл rcdll.dll, иначе я получаю сообщение об ошибке link.exe. См. stackoverflow.com/a/44563421/8195528 - person Jon; 24.07.2019
comment
не исправил для меня ( - person Dmitry; 23.01.2020
comment
черт возьми, это меня раздражало! рад, что теперь он работает. Спасибо дружище, большое спасибо за ссылку. - person Umar.H; 20.06.2020
comment
Спасибо! Я пытался запустить pip install twofish, и ошибка привела меня сюда, что решило проблему! - person Neophear; 30.11.2020

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

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

Во-первых, я создаю библиотеку для своей функции cuda. ​​Во-вторых, я запускаю python setup.py build_ext -i для создания папки temp (вы получите ошибку), затем скомпилирую 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 необязательны,
  • / EXPORT: initmy_cuda является обязательным. Его формат init% yourfilename_WO_Ext%
  • "/OUT:E:\my_cuda.pyd" для определения вашего местоположения вывода, его имени файла и его расширения.
person Khalif21    schedule 26.10.2016

Добавьте их в каталоги установки Visual Studio в переменные среды.

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 \ Common7 \ Tools

надеюсь, что это решит проблему.

person Khan    schedule 30.09.2018
comment
Хотя эти каталоги существовали, мне это не помогло. - person Joshua Burns; 07.02.2020

Я мог бы решить эту проблему, загрузив и установив последнюю версию Windows 10 SDK по этой ссылке: https://software-download.microsoft.com/download/pr/19041.685.201201-2105.vb_release_svc_prod1_WindowsSDK.iso

но затем появилась другая проблема с (cpython):

error C2039: 'exc_type': is not a member of '_ts'

который я мог решить, объявив дополнительные указатели в

(...\python38\include\cpython\pystate.h)

Я нашел их в строке 77:

/* The exception currently being raised */
PyObject *curexc_type;
PyObject *curexc_value;
PyObject *curexc_traceback;

и я добавляю следующее сразу после них (без первых трех букв cur):

/* The exception currently being raised */
PyObject *exc_type;
PyObject *exc_value;
PyObject *exc_traceback;
person Omar Elsayed Elsherif    schedule 20.12.2020
comment
Необходимость переименовать внутренние детали заголовков Python предполагает, что вы что-то напутали. Я предполагаю, что вы используете версию Cython 3-летней давности, несовместимую с Python 3.8. Ваше решение не является решением, и вы должны ожидать, что ваша программа неожиданно сломается - person DavidW; 20.12.2020