我需要一个独立的python解释器/编译器!

时间:2010-12-11 15:02:55

标签: python compiler-construction

好的,所以我需要一个python编译器(从.py或.pyw到.exe)。

我遇到的唯一一个是:

- cx_freeze(无效)

- py2exe(太复杂了)

修改 上面的两个程序都很复杂(对我来说),因为你必须制作所有这些安装文件,并输入一堆参数和命令来使它们工作,我发现了一些名为gui2exe.py然而我似乎无法得到它正确加载......任何想法?

所以我正在寻找的是一个你不必通过python命令行运行的程序。最好是独立程序,您只需选择文件并选择输出(.exe)并单击转换即可。没有什么比我刚刚开始时更复杂。

我想要这个的原因是因为我有一个程序,我的朋友想看看,但他不想下载python以便查看它。此外,我不希望他能够更改源代码。

任何想法?

6 个答案:

答案 0 :(得分:5)

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],
    )

它还包括一个小图形界面,可帮助您选择文件;)

编辑:

这是一个更简单的样本,也许它更有用:)

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'])

注意使用'console'而不是'windows',因为你没有gui

然后,将您的hello.py文件和setup.py文件移动到Python目录中;然后打开cmd,一旦到达正确的目录(通常是C:\ python2x),输入:

python setup.py py2exe

你的exe文件将在dist目录中。如果缺少某些.dll,只需将其下载并放在python目录中即可。

一旦您的程序更复杂,可能需要其他说明;看看我发布的其他2个setup.py示例。 希望这个帮助

答案 1 :(得分:2)

一种选择可能是使用IronPython。 IronPython是针对.NET的另一种python方言,可以很容易地与MS Visual Studio一起使用。

答案 2 :(得分:1)

py2exe - Python到Windows EXE py2exe将您的Python程序转换为独立的Windows可执行文件,无需用户安装Python即可运行。请注意,这不是本机代码编译器 - 您的代码仍然被解释。 py2exe仅提供所有必需的部分,以便当您的最终用户双击您的可执行文件时,Python解释器将启动以解释您的代码。 py2exe是在Mozilla Public License下发布的

答案 3 :(得分:1)

看一下gui2exe,它是py2exe,pyinstaller等非常好的前端。

答案 4 :(得分:0)

这不是我向初学者推荐的东西,但如果您对C / C ++编译器感到满意,可以试试Shed Skin。如果您的Python源代码满足某些要求,Shed Skin可以将其转换为C ++并将C ++编译为二进制可执行文件。

答案 5 :(得分:0)

您还可以简单地向您的朋友提供包含python.exe,python库和python应用程序(在pyc中)的ZIP文件以及批处理以使用您的脚本启动python.exe。如果没有“安装”,Python就很容易运行。