簡體   English   中英

使用 Cx-Freeze 編譯 python 項目

[英]Compiling python project with Cx-Freeze

我正在嘗試從我正在處理的項目中制作和執行,以在另一台計算機上對其進行測試,而無需安裝 python。

我想使用 cx freeze 來構建和 exe 文件,這是我的項目樹:

- Project
   - objects
         blocks.py
         enemy.py
         item.py
         player.py
         __init__.py
   - scripts
         camera.py
         chunk_manager.py
         __init__.py
   - textures
       - items
       - player
       - terrain
       - UI
       - void
         index.py
         __init__.py
     main.py
     settings.py
     setup.py
     map.json

您可能會說,這是一場游戲。

無論如何,我所做的只是執行cxfreeze main.py --target-dir=./ dist並且它生成了一個包含很多東西的構建目錄。 它生成了一個 linux 可執行文件,但沒關系,我想先測試是否可以使其獨立於 python,稍后我將解決 .exe 部分。

所以,我執行了文件,什么也沒發生。 然后我嘗試從終端運行,它說它缺少 camera.py 文件。 我進入生成的目錄,發現 cxfreeze 沒有復制該文件。 我試着自己搬進去,但沒有用。

我開始檢查其他文件,我發現只有紋理被復制了。 我認為這只是因為我使用了一行命令,所以我現在正在嘗試制作一個 setup.py 文件(正如您在文件樹中看到的那樣),但是我迷失了如何導入我的自定義包(對象,腳本和紋理)以及與 main.py 位於同一目錄中的文件

這就是我的 setup.py 文件的樣子:

import sys
from cx_Freeze import setup, Executable


options = {
    'build_exe': {
        'includes': ['camera', 'chunk_manager'], 'path': sys.path + ['scripts']
    }
}

setup(
    name = "Void Boats",
    version = "alpha0.1",
    options = options,
    executables = [Executable("main.py")])

我不確定如何將所有包放在“包含”部分中,而且我在互聯網上找不到任何使用比 helloworld.py 之類的簡單文件更多的內容,並且其 github 上的 cxfreeze 示例僅顯示如何從一個目錄導入文件。 我是否必須將所有內容移至一個 package 並將所有文件放在同一個“包含”中? 或者我可以為我擁有的每個 package 包含一個嗎? 任何幫助將不勝感激。

編輯:我在 ParrotSec 4.9(基於 Debian)上運行

在 cmd 上使用“python -m setup.py build”,這將構建 exe。

帶有額外文件夾的示例設置:

from cx_Freeze import setup, Executable
import sys

version = "0.0.6"

build_options = {
    "packages": [],
    "excludes": [],
    "build_exe": "X:\\builds\\",
    "include_files": ["Sequence_Sample/", "icons/"],
}

base = "Win32GUI" if sys.platform == "win32" else None

executables = [Executable("MainUIController.py", base=base, targetName="pym")]

setup(
    name="Python Image Macro Project",
    version=version,
    description="Image Based macro project.",
    options={"build_exe": build_options},
    executables=executables,
)

Python 3.8 及更高版本與 cx_freeze 6.1 存在問題- 不復制 python dll。 如果是這種情況,強烈建議使用 cx_freeze 6.2。

您必須克隆 cx_freeze 並構建它,然后安裝它以使用 6.2。

暫無
暫無

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

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