如何在 Windows OS 上使用 setuptools 为 Cython 项目创建可执行文件?
How do I create executable for Cython project using setuptools on Windows OS?
main.py:
print('test')
我可以使用这个命令构建:
python setup.py build_ext --inplace --compiler=msvc
这将创建 *.pyd 文件并将它们放入我的包中所需的文件夹中。
但是我的 main.py 被编译为 main.pyd.
Extension(
'main',
sources=['main.c','main.py'],
include_dirs=[np.get_include()],
)
试过这个:
cl.exe /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\P\Python27-32\include /Tcmain.c /link /OUT:"main.exe" /SUBSYSTEM:WINDOWS /MACHINE:X86 /LIBPATH:C:\P\Python27-32\libs
但是失败了:
main.c Creating library main.lib and object main.exp
MSVCRT.lib(crtexew.obj) : error LNK2019: unresolved external symbol
_WinMain@16 referenced in function ___tmainCRTStartup main.exe : fatal error LNK1120: 1 unresolved externals
有没有办法使用 Cython 将其构建为 Windows 可执行文件 main.exe?
尝试使用 PyInstaller
pip install pyinstaller
根据我的经验,这个框架始终有效
并在必要时下载 Cython 捆绑包:
https://github.com/prologic/pyinstaller-cython-bundling
我想出来了。
setup.py 必须公开 entry_point:
entry_points={
'console_scripts': [
'mypackage-cli=mypackage.command_line:main',
],
},
command_line.py:
from . import cli
def main():
print cli()
__init__.py:
from markdown import markdown
def cli():
return markdown(u'It''s a CLI!')
在python setup.py develop
之后
它在 %PYTHONPATH%\Scripts
中使用 'shim' 脚本 mypackage-cli-script.py
创建可执行文件 mypackage-cli.exe
c:\tmp\mypackage>C:\Python27-32\Scripts\mypackage-cli.exe
<p>It's a CLI!</p>
需要 Python 分布在 C:\Python27-32
我在这里发布了演示:github:mycyexepackage
main.py:
print('test')
我可以使用这个命令构建:
python setup.py build_ext --inplace --compiler=msvc
这将创建 *.pyd 文件并将它们放入我的包中所需的文件夹中。
但是我的 main.py 被编译为 main.pyd.
Extension(
'main',
sources=['main.c','main.py'],
include_dirs=[np.get_include()],
)
试过这个:
cl.exe /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\P\Python27-32\include /Tcmain.c /link /OUT:"main.exe" /SUBSYSTEM:WINDOWS /MACHINE:X86 /LIBPATH:C:\P\Python27-32\libs
但是失败了:
main.c Creating library main.lib and object main.exp MSVCRT.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup main.exe : fatal error LNK1120: 1 unresolved externals
有没有办法使用 Cython 将其构建为 Windows 可执行文件 main.exe?
尝试使用 PyInstaller
pip install pyinstaller
根据我的经验,这个框架始终有效
并在必要时下载 Cython 捆绑包: https://github.com/prologic/pyinstaller-cython-bundling
我想出来了。
setup.py 必须公开 entry_point:
entry_points={
'console_scripts': [
'mypackage-cli=mypackage.command_line:main',
],
},
command_line.py:
from . import cli
def main():
print cli()
__init__.py:
from markdown import markdown
def cli():
return markdown(u'It''s a CLI!')
在python setup.py develop
之后
它在 %PYTHONPATH%\Scripts
mypackage-cli-script.py
创建可执行文件 mypackage-cli.exe
c:\tmp\mypackage>C:\Python27-32\Scripts\mypackage-cli.exe
<p>It's a CLI!</p>
需要 Python 分布在 C:\Python27-32
我在这里发布了演示:github:mycyexepackage