【问题标题】:How do I create executable for Cython project using setuptools on Windows OS?如何在 Windows 操作系统上使用 setuptools 为 Cython 项目创建可执行文件?
【发布时间】:2018-08-23 19:14:07
【问题描述】:

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:未解析的外部符号 _WinMain@16 在函数 ___tmainCRTStartup main.exe 中引用:致命错误 LNK1120: 1 unresolved externals

有没有办法使用 Cython 将其构建为 Windows 可执行 main.exe?

【问题讨论】:

标签: python cython executable setuptools


【解决方案1】:

尝试使用 PyInstaller

pip install pyinstaller

根据我的经验,这个框架总是有效的

如有必要,请下载 Cython 捆绑包: https://github.com/prologic/pyinstaller-cython-bundling

【讨论】:

  • 我不确定我是否理解你
【解决方案2】:

我想通了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多