如何使用Windows操作系统上的安装工具为Cython项目创建可执行文件?



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:PPython27-32include /Tcmain.c /link /OUT:"main.exe" /SUBSYSTEM:WINDOWS /MACHINE:X86 /LIBPATH:C:PPython27-32libs

但它失败了:

main.c 创建库 main.lib 和对象 main.exp MSVCRT.lib(crtexew.obj(:错误LNK2019:未解析的外部符号 _WinMain@16函数___tmainCRTStartup main中引用.exe:致命错误LNK1120:1个未解析的外部

有没有办法使用Cython将其构建为Windows可执行文件主.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之后 它使用"填充程序"脚本mypackage-cli.exe创建可执行文件,mypackage-cli-script.py在 %PYTHONPATH%\Scripts 中

c:tmpmypackage>C:Python27-32Scriptsmypackage-cli.exe

<p>It's a CLI!</p>

它要求Python发行版处于C:Python27-32

我在这里发布了演示:github:mycyexepackage

最新更新