Как создать исполняемый файл Windows, который встраивает интерпретатор Python с использованием Cython - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь создать исполняемый файл, используя Cython со встроенным Python ( смотрите здесь ). Я могу найти примеры, делающие это на Linux, но не на Windows. Единственный пример Windows Я могу найти результаты в исполняемом файле, который вызывает python dll ( здесь ). Но это не то, что я ищу. Я хочу автономный исполняемый файл, который не вызывает python dll.

Ниже того, что я сделал:

Сначала программа (hello.py):

print("hello")

Я запускаю Cython с опцией --embed в приглашении anaconda:

cython hello.py --embed

В результате получается файл c с основной функцией (привет. c).

Затем установите соответствующие переменные среды:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"

Затем скомпилируйте и скомпонуйте это:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe"  /nologo /Ox /MD /W3 /GS- /DNDEBUG -Ic:\Anaconda3_5.2.0\include -Ic:\Anaconda3_5.2.0\PC /Tchello.c /link /OUT:"test.exe" /SUBSYSTEM:CONSOLE /LIBPATH:C:\Anaconda3_5.2.0\libs /LIBPATH:C:\Anaconda3_5.2.0\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64" "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\LIB\amd64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64"

В результате получается небольшой (19 КБ) исполняемый файл (тест. exe).

Чтобы запустить этот параметр, установите PYTHONPATH

set PYTHONPATH=C:\Anaconda3_5.2.0

и вызовите программу

test.exe

, которая работает без каких-либо проблем, но Python не встроена как он называет python36.dll. Я предполагаю, что компиляция и компоновка должны быть выполнены по-другому, но я не знаю как. Кто-нибудь знает, как создать исполняемый файл windows, который встраивает интерпретатор Python с использованием Cython? Любая помощь будет принята с благодарностью.

...