簡體   English   中英

打包pygame python腳本以實現跨平台

[英]Packaging pygame python scripts for cross-platform

使用pygame模塊作為跨平台可執行文件打包python腳本的最佳方法是什么? 我需要能夠從我的Linux機器上進行編譯。 我嘗試使用PyInstaller,但是,當我運行編譯的可執行文件時,它說找不到pygame模塊。 當我通過Wing IDE調試將其作為python腳本運行時,它可以正常運行,因此我顯然已經安裝了pygame。 但是,當我嘗試在沒有IDE調試的情況下運行時,它無法創建Windows。 我的腳本只能通過Wing IDE運行嗎? 如何打包我的游戲,使其可以在任何計算機,Linux或Windows上運行,甚至不需要python或pygame? 這有可能嗎?

我的來源: https : //github.com/william1008/TrappedTux

PyInstaller可以很好地構建同時嵌入python和pygame的Windows可執行文件。

這是我正在使用的規格文件:

# -*- mode: python -*-
a = Analysis(['MyApplication.py'],
             pathex=['.'],
             hiddenimports=[],
             hookspath=None,
             runtime_hooks=None)

# Remove some weird error message
for d in a.datas:
    if 'pyconfig' in d[0]: 
        a.datas.remove(d)
        break

pyz = PYZ(a.pure)
exe = EXE(pyz,
          Tree('resource', prefix='resource', excludes=[]),
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='MyApplication.exe',
          debug=False,
          strip=None,
          upx=True,
          console=False,
          icon="resource/image/MyApplication.ico")

這會將所有內容(以及資源​​)捆綁到一個可執行文件中。 但是,您將需要使用sys._MEIPATH來訪問這些資源。 我使用以下代碼自動檢測要使用的路徑:

def resource_path(relative):
    if hasattr(sys, "_MEIPASS"):
        return os.path.join(sys._MEIPASS, relative)
    return relative

我建議使用cx_Freeze,它相對易於使用,並且支持Windows和OS X

暫無
暫無

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

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