Как я могу скомпилировать расширение с помощью Cython? - PullRequest
3 голосов
/ 11 ноября 2011

Я пытаюсь скомпилировать простое расширение Cython со страницы примера здесь на моей 64-битной машине с Windows 7 с установленной 64-битной версией Python 2.6. Я установил Cython 0.15.1 для 64-битной версии Windows со страницы Гольке .

По сути, ответы здесь и здесь не мои варианты, потому что мне действительно нужна 64-битная версия Python для адресации большей памяти. Кроме того, поскольку я пытаюсь скомпилировать с использованием Microsoft SDK для .NET 4 , я не могу использовать подход в последнем решении.

Я попробовал шаги здесь и заметил зеленое окно, но компиляция теперь выдает ошибку cannot find vcvarsall.bat. Ниже приведена последовательность команд, которые я попробовал:

C:\>cd "Program Files\Microsoft SDKs\Windows\v7.1\"
C:\Program Files\Microsoft SDKs\Windows\v7.1>set DISTUTILS_USE_SDK=1
C:\Program Files\Microsoft SDKs\Windows\v7.1>setenv /x64 /release

Setting SDK environment relative to C:\Program Files\Microsoft SDKs\Windows\v7.1\.
Targeting Windows 7 x64 Release

C:\Program Files\Microsoft SDKs\Windows\v7.1>e:

E:\>cd cython

E:\cython>python setup.py build_ext --inplace
running build_ext
skipping 'fib.c' Cython extension (up-to-date)
building 'fib' extension
error: Unable to find vcvarsall.bat

Есть предложения, как мне это решить?

Ответы [ 3 ]

5 голосов
/ 11 ноября 2011

Документы на http://wiki.cython.org/64BitCythonExtensionsOnWindows говорят:

Для Python 2.6, 2.7 и 3.1 вы должны использовать Microsoft Windows SDK для Windows 7 и .NET Framework 3.5 SP1.Более поздние или более ранние версии SDK будут связаны с неправильной средой выполнения C.Обратите внимание, что более поздние версии Python, вероятно, потребуют более свежую версию Windows SDK.Это необходимо, чтобы убедиться, что расширение связано с той же версией C, что и Python.Использование правильной версии SDK - единственный способ контролировать это с помощью инструментов сборки Microsoft.

5 голосов
/ 11 ноября 2011

Вот выдержка из одного из моих пакетных файлов:

rem Configure the environment for 64-bit builds.
rem Use "vcvars32.bat" for a 32-bit build.
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64.bat"
rem Convince setup.py to use the SDK tools.
set MSSdk=1
set DISTUTILS_USE_SDK=1 

7.1 SDK использует то, что эффективно VS2010, но Python 2.6 скомпилирован с VS2008.Если вы можете использовать 7.0 SDK (я думаю, он также известен как .NET 3.5 SDK), у вас будет доступ к компилятору VS2008.Смешивать разные компиляторы и библиотеки времени выполнения рискованно.

0 голосов
/ 13 февраля 2015

У Microsoft теперь есть пакет компилятора переменного тока специально для Python 2.7.

Я предлагаю вам использовать это вместо SDK и VS.В VS Express Edition нет 64-битного компилятора, поэтому теоретически вам нужен SDK.Я попытался установить SDK, но это не помогло.Если вам не нужен SDK или VS для чего-либо еще, удалите их и используйте компиляторы из http://www.microsoft.com/en-gb/download/details.aspx?id=44266.

Если у вас все еще есть проблемы после установки компиляторов, мой ответ на pyusb 2.7 ошибка установки Windows может быть полезным.

...