2010-12-11 57 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在“未安装”的情况下运行相当容易。