如何在Windows OS上使用setuptools为Cython项目创建可执行文件?

时间:2018-08-23 19:14:08

标签: python cython executable setuptools

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创建库main.lib和对象main.exp   MSVCRT.lib(crtexew.obj):错误LNK2019:无法解析的外部符号   函数___tmainCRTStartup main.exe中引用_WinMain @ 16:致命错误LNK1120:1个未解决的外部组件

是否可以使用Cython将其构建为Windows可执行文件main.exe?

2 个答案:

答案 0 :(得分:1)

尝试使用PyInstaller

pip install pyinstaller

根据我的经验,此框架始终有效

并在必要时下载Cython捆绑软件: https://github.com/prologic/pyinstaller-cython-bundling

答案 1 :(得分:1)

我知道了。

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.exe创建可执行文件mypackage-cli-script.py
c:\tmp\mypackage>C:\Python27-32\Scripts\mypackage-cli.exe

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

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

我在此处发布了演示:github:mycyexepackage