簡體   English   中英

使用cx_Freeze編譯Python C擴展

[英]Compile Python C Extensions with cx_Freeze

我正在嘗試使用具有C擴展模塊的Python 3軟件包在Windows上創建一個exe。 在distutils中,您可以創建如下擴展名:

from distutils.core import setup, Extension

module1 = Extension('demo',
                     sources = ['demo.c'])

setup (name = 'PackageName',
       version = '1.0',
       description = 'This is a demo package',
       ext_modules = [module1])

然后,將使用相應的編譯器編譯該擴展,並使用以下命令將其放置在其他模塊的旁邊:

python setup.py build_ext --inplace

cx_Freeze是一個模塊,可以將您的代碼與Python解釋器和相關軟件包一起打包到exe文件中。 然后,最終用戶無需安裝Python就可以使用您的程序。 不幸的是,cx_Freeze沒有擴展類,我找不到用cx_Freeze處理編譯的方法。

我不確定的一個解決方案是先使用distutils / setuptools構建適當的擴展,然后使用cx_Freeze創建可執行文件。 不過,我不想重新發明輪子,所以我想知道在這個領域有更多經驗的其他人是否有解決方案。

我找到了可行的解決方案。 我可以從distutils導入Extension,然后從cx_Freeze將其傳遞到安裝程序中:

from cx_Freeze import setup
from distutils.core import Extension
...
setup=(...
       ext_modules=Extension(...))

這是有道理的,因為cx_Freeze建立在distutils之上。 最初,我試圖使用setuptools.setup ,但這不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM