2010-12-11 90 views
0

好,所以我需要一個python編譯器(從.py或.pyw到.exe)。我需要一個獨立的python解釋器/編譯器!

唯一的我所遇到的是:

- cx_freeze(不工作)

- py2exe(太複雜)

編輯: 兩者的上面的程序很複雜(對我來說),因爲你必須創建所有這些設置文件,並輸入一串參數和命令才能使它們工作,我發現了一些名爲gui2exe的東西。 py但是我似乎無法得到它加載正確...任何想法?

所以我在找的是一個程序,你不必通過python命令行運行。一個獨立的程序,你可以選擇文件並選擇輸出(.exe)並點擊convert。沒什麼太複雜的,因爲我剛剛開始。

我想要這個的原因是因爲我有一個程序,我的朋友想看看,但他不想下載python以查看它。另外我不希望他能夠改變源代碼。

任何想法?

+8

已經有兩個人知道主要選項。你問的是錯誤的問題,你應該(1)告訴我們**什麼**不能與cx_Freeze一起工作,所以我們可以幫助解決它或(2)尋求幫助來開始使用py2exe。此外,你期望太多(「只選擇文件和輸出」 - 很多非平凡程序都有依賴關係,程序無法靜態檢測)。 – delnan 2010-12-11 15:06:23

+0

確定你可能是對的那部分,當我打開cx_freeze它沒有做任何事情,它只是一個非常小的批處理文件..我真的不知道它是如何編譯任何東西的...另外,我想知道到底是什麼鍵入如果我編譯「test.py」並輸出.exe文件到「F:\ scripts \ python」 – daniel11 2010-12-11 15:10:52

+1

py2exe非常簡單。這不是「太複雜」,除非你的設置很複雜,但你沒有說什麼會讓它變得複雜。 – 2010-12-11 15:11:57

回答

4

Pyinstallet可能幫助下發布...

但py2exe並不複雜...

看看這個py2exe樣本設置(從這裏開始,但它是意大利,所以我把它翻譯http://bancaldo.wordpress.com/2010/05/13/python-py2exe-setup-py-sample/

#!/usr/bin/python 

from distutils.core import setup 
import py2exe, sys, wx, os 

# Se eseguito senza argomenti, crea l'exe in quiet mode. 
# If executed without args, it makes the exe in quiet mode 
if len(sys.argv) == 1: 
    sys.argv.append("py2exe") 
    sys.argv.append("-q") 

class FileBrowser(wx.FileDialog): 
    def __init__(self): 
     wildcard = "Python files (*.py)|*.py|" \ 
      "Tutti i files (*.*)|*.*" 
     dialog = wx.FileDialog(None, "Choose the file", os.getcwd(), 
      "", wildcard, wx.OPEN) 
     if dialog.ShowModal() == wx.ID_OK: 
      print(dialog.GetPath()) 
     self.file = dialog.GetPath() 
     self.fin = open(self.file, 'r') 
     dialog.Destroy() 

class Target: 
    def __init__(self, **kw): 
     self.__dict__.update(kw) 
     # info di versione 
     self.version = "1.0.0" 
     self.company_name = "Bancaldo TM" 
     self.copyright = "no copyright" 
     self.name = "py2exe sample files" 

manifest_template = ''' 
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> 
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level='asInvoker' uiAccess='false' /> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity 
    type='win32' 
    name='Microsoft.VC90.CRT' 
    version='9.0.21022.8' 
    processorArchitecture='*' 
    publicKeyToken='1fc8b3b9a1e18e3b' /> 
    </dependentAssembly> 
    </dependency> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity 
     type="win32" 
     name="Microsoft.Windows.Common-Controls" 
     version="6.0.0.0" 
     processorArchitecture="*" 
     publicKeyToken="6595b64144ccf1df" 
     language="*" /> 
    </dependentAssembly> 
    </dependency> 
</assembly> 
''' 
# File Browser 
app = wx.PySimpleApp() 
fb = FileBrowser() 
# Assegno il nome all'eseguibile di uscita 
# Give the name at the exe file being created 
textentry = wx.TextEntryDialog(None, "name file EXE?",'','') 
if textentry.ShowModal() == wx.ID_OK: 
    destname = textentry.GetValue() 

RT_MANIFEST = 24 

test_wx = Target(
    description = "A GUI app", 
    script = fb.file,  # programma sorgente dal quale creiamo l'exe 
          # source from wich we create the exe 
    other_resources = [(RT_MANIFEST, 1, manifest_template % dict(prog="tried"))], 
    icon_resources = [(1, "py.ico")], 
# dest_base = "prova_banco") # Nome file di destinazione 
           #Name Destination file 
    dest_base = destname) # Nome file di destinazione 

setup(
    data_files=["py.ico"], 
    options = {"py2exe": {"compressed": 1, 
          "optimize": 2, 
          "ascii": 1, 
          "bundle_files": 1}}, 
    zipfile = None, 
    windows = [test_wx], 
    ) 

也inclused上選擇文件小的圖形界面至極幫助你;)

編輯:

這是一個簡單的樣本,也許這是更爲有用:)

from distutils.core import setup 
import py2exe 
setup(
    name = 'AppPyName', 
    description = 'Python-based App', 
    version = '1.0', 
    windows = [{'script': 'Main.pyw'}], 
    options = {'py2exe': {'bundle_files': 1,'packages':'encodings','includes': 'cairo, pango, pangocairo, atk, gobject',}}, 
    data_files=[ 'gui.glade',] 
    zipfile = None, 
) 

教程一步一步:

1 - 創建一個.py文件,將其命名,例如「 hello.py「還沒有一個GUI 2-做出setup.py文件

from distutils.core import setup 
import py2exe 

setup(console=['hello.py']) 

通知使用‘’而不是‘Windows控制檯’,」因爲你沒有一個GUI

然後,移動你的hello.py文件和你的設置。Python目錄中的py文件;然後打開cmd,然後一旦你在正確的目錄(通常是C:\ python2x)到貨,型號:

python setup.py py2exe 

你是exe文件將在dist目錄。如果某些.dll文件丟失,只需下載它並放入python目錄即可。

一旦你的程序會更復雜,可能需要其他指令;看看我發佈的其他2個setup.py樣本。 希望這幫助

+0

好吧,這是一個setup.py文件的例子嗎?或setup.py文件可以編譯的程序示例...我試着在上面運行你的腳本,它沒有打開,我需要從python cmd運行它嗎? – daniel11 2010-12-11 16:17:49

+0

這是setup.py文件的一個例子,即使你可以寫一個更簡單的(我編輯我的代碼以顯示它);)你有沒有安裝wx?如果不起作用,請嘗試在代碼中添加'app.mainloop()';) – Ant 2010-12-11 16:34:41

+0

不,我還沒有安裝wx,並且在腳本中我還會添加'app.mainloop()'? – daniel11 2010-12-11 17:16:59

1

py2exe - Python到Windows EXE py2exe將您的Python程序轉換爲獨立的Windows可執行文件,無需用戶需要安裝Python即可運行。請注意,這不是本地代碼編譯器 - 您的代碼仍然被解釋。 py2exe僅提供所有必要的部分,以便當最終用戶雙擊可執行文件時,Python解釋器將啓動以解釋您的代碼。 py2exe是Mozilla公共許可協議

+0

其中一些(它不是本地編譯的部分)可能很有趣,但我不認爲它的地址這個問題以任何方式? – delnan 2010-12-11 15:34:36

2

一種選擇可能是使用IronPython的。 IronPython是針對.NET的python的另一種方言,可以很容易地與MS Visual Studio一起工作。

+0

+1,但我會再次推薦py2exe。這很簡單。 – basarat 2010-12-11 16:59:03

1

看一看gui2exe,這是一個相當不錯的前端到py2exe,pyinstaller等

+0

好ive得到了gui2exe,它看起來像它的工作原理,但是當我雙擊我下載的zip文件夾中的gui2exe.py文件時,它沒有打開,並且當我在python命令行中鍵入「python GUI2exe.py」時,它出現語法錯誤。我怎樣才能解決這個問題? – daniel11 2010-12-11 16:44:22

+0

你能發表你看到的語法錯誤嗎?另外檢查一下,確保你已經安裝了你需要的所有軟件包 - 我認爲GUI至少要加載的唯一要求是wxPython,但是自從我使用該程序以來已經有一段時間了。 – ChrisC 2010-12-11 23:47:10

+0

好ive試圖在cmd中鍵入「python gui2exe.py」,現在它說「沒有模塊」,但是我安裝並重新安裝它,就像20次「 – daniel11 2010-12-12 04:38:02

0

這不是我建議初學者,但如果您熟悉C/C++編譯器,你可以嘗試Shed Skin。如果您的Python源代碼滿足特定要求,則Shed Skin可將其轉換爲C++並將C++編譯爲二進制可執行文件。

+0

這並不完全是一個_simpler_解決方案比使用py2exe ... – 2010-12-11 17:25:00

+0

@Robert Liffredo:我不反對,但你永遠不知道有些人會發現更容易或更難。我覺得值得在那裏拋出另一種選擇。另外,其他人查看這個問題的最終目的不同於OP可能會發現Shed Skin有用。 – 2010-12-11 17:34:17

0

你也可以簡單地提供你的朋友含python.exe,蟒蛇庫一個ZIP文件,你的Python應用程序(在PYC)有一批與你的腳本啓動python.exe一起。 Python在「未安裝」的情況下運行相當容易。