2010-11-11 28 views
21

所以我有一個Python腳本:我可以以某種方式「編譯」一個python腳本,在未安裝Python的PC上工作嗎?

myscript.py 

我執行這樣的:

python D:\myscript.py 

但是,我必須安裝Python安裝幷包含在該工作的PATH環境變量。

是否有可能用Python腳本「捆綁」Python可執行文件,以便其他人可以在沒有Python的PC上運行它?

如果它只能在Windows中運行,那沒關係。

編輯:

嘗試compile.py後,我得到這個錯誤:

Traceback (most recent call last): 
    File "D:\stuff\compile.py", line 4, in <module> 
    import py2exe 
ImportError: No module named py2exe 
+0

爲了解決導入錯誤,您需要獲得正確版本的'py2exe'(32位或64位,取決於您的python安裝程序),安裝它並另外檢查安裝它的文件夾是否包含在sys.path ' – Unode 2010-11-11 23:34:40

回答

17

這是一種方法(對於Windows,使用py2exe)。

首先,在Windows機器上安裝py2exe

然後創建一個名爲compile.py Python腳本,例如:

import sys 
from distutils.core import setup 
import py2exe 

entry_point = sys.argv[1] 
sys.argv.pop() 
sys.argv.append('py2exe') 
sys.argv.append('-q') 

opts = { 
    'py2exe': { 
     'compressed': 1, 
     'optimize': 2, 
     'bundle_files': 1 
    } 
} 

setup(console=[entry_point], options=opts, zipfile=None) 

要編譯的Python腳本到一個Windows可執行文件,而且你的程序作爲參數運行此腳本:

$ python compile.py myscript.py 

它將使用內部編譯的Python解釋器吐出二進制可執行文件(EXE)。然後你可以分發這個可執行文件。

+0

謝謝。雖然我收到了一個錯誤。檢查我更新的答案。 – 2010-11-11 21:43:13

+0

你安裝了py2exe嗎? – 2010-11-11 22:24:11

+0

是的。我已經從Sourceforge下載並安裝了py2exe-0.6.9.win64-py2.5.amd64。 – 2010-11-11 22:36:52

5

Here是它們的列表。

11

PyInstaller對我來說效果很好,由於它使用了upx,所以生成了相當小的包。它的依賴性檢測在當時也比py2exe好。但是,它似乎沒有很多近期的發展,可能不適用於3.x。

存儲庫中的源代碼是比1.4包更好的起點。

另請參閱關於使用Python 2.6+的wiki頁面。

從功能列表:

  • Python程序轉換成標準的可執行文件的包裝,沒有Python的計算機上安裝工作。多平臺:適用於Windows(32位和64位),Linux(32位和64位)和Mac OS X(現在僅限32位,請參閱MacOsCompatibility)。
  • Multiversion:可在任何版本的Python下工作,從1.5到2.7。注意:如果您在Windows上使用Python 2.6+,請參閱Python26Win。
  • 軟包裝模式:
  • 單一目錄:建立一個目錄,其中包含一個可執行文件以及程序使用的所有外部二進制模塊(.dll,.pyd,.so)。
  • 單個文件:構建一個完全自包含的單個可執行文件,該文件在沒有任何外部依賴的情況下運行。
  • 自定義:您可以自動化PyInstaller通過Python中的簡單腳本文件來執行任何您想要的打包模式。
  • 顯式智能支持許多第三包(用於隱藏導入,外部數據文件等),以使它們可以與PyInstaller一起使用(請參閱SupportedPackages)。
  • 完整的單文件EGG支持:必需的.egg文件會自動檢查是否存在依賴關係並捆綁在一起,並且在運行時也支持所有特定於蛋的功能(入口點等)。
  • 部分目錄EGG支持:需要.egg目錄會自動檢查依賴性和捆綁,但特定於蛋的功能在運行時不起作用。
  • 自動支持通過ctypes使用的二進制庫(有關詳細信息,請參閱CtypesDependencySupport)。
  • 通過知名的UPX壓縮機支持自動二元包裝。
  • 可選控制檯模式(請參閱運行時的標準輸出和標準錯誤)。
  • Windows特定功能:
  • 支持代碼簽名可執行文件。
  • 全自動支持CRT:無需手動分發MSVCR * .DLL,redist安裝程序,清單或其他任何東西;真正的單一文件應用程序,無處不在!
  • 可選的可執行圖標。
  • 完全可配置的版本資源部分和可執行文件中的清單。
  • 支持構建COM服務器。
  • Mac專用功能:
  • 用於捆綁Preliminar支持(見MacOsCompatibility)
+0

我發現PyInstaller更適合PyQt GUI和各種其他庫的最新版本的Python和腳本。只要確保從SVN中獲取最新的代碼(其開發人員並沒有多少更新的正式版本) – 2010-11-13 05:58:07

0

轉到記事本++菜單,插件 - > - Python腳本 - >顯示控制檯。在新打開的控制檯窗口中,底部輸入..... execfile('C:/path/to/your/python/file/code.py')#使用正斜槓(/)而不是反斜槓斜線。 點擊返回或點擊運行按鈕。

+0

問題突出顯示了「編譯」問題中的一個很好的理由。運行帶有python依賴項的工具會算作「已安裝的python」。這不是問題所在。 – 2017-09-09 09:09:09

相關問題