【问题标题】:How to create a Linux executable file using python code如何使用 python 代码创建 Linux 可执行文件
【发布时间】:2015-05-10 09:26:25
【问题描述】:

例如,我使用 Tkinter 创建了带有简单 GUI 的 welcomeGUI.py 文件,如下所示。

from Tkinter import *
import ttk

class Application():

    def __init__(self, master):
        frame = Create_widgets(master)
        frame.pack()

class Create_widgets(Frame):

    def __init__(self, master):
        Frame.__init__(self, master)

        self.toplabel = Label(master, text="Welcome!", font=('cambria', 20, 'bold'),
                         fg="white", bg="Midnight Blue")
        self.toplabel.pack(fill=X, ipady=100)

        statuslabel = Label(master, bg="Midnight Blue")
        statuslabel.pack(fill=X)
        self.midlabel = Label(master, text="Device ready,connect a flash drive to continue...",
                         font=('Ubuntu-L', 12), fg= "white", bg="Midnight Blue", anchor="n")
        self.midlabel.pack(fill=X, ipady=5)

        bottomlabel = Label(master, bg="Gainsboro")
        bottomlabel.pack(side=BOTTOM, fill=X)

        button1 = ttk.Button(bottomlabel, text="Close")
        button1.pack(side=BOTTOM)

#**** Main ****

root = Tk()
root.title("Projector Plus")
root.configure(bg="Midnight Blue")
root.minsize(550, 550)

pro = Application(root)

root.mainloop()

然后我需要创建这个可以安装在 Ubuntu 上的文件(在 Ubuntu 上创建一个可执行文件)。在 Windows 中,使用 .exe 文件(使用 cx-Freeze)很容易做到这一点。我真的不知道Ubuntu的文件系统和shell文件。

请帮助我了解这个问题。我不知道如何进入这个问题。

【问题讨论】:

  • stackoverflow.com/questions/12089254/…此链接可能会有所帮助。
  • 你的意思是包含其他库还是只是 Tkinter?
  • 你也可以使用 PyInstaller - 它是跨平台的
  • @PadraicCunningham 是的,包括 OpenCV 中的其他库?如何将它们捆绑到一个可执行文件中?
  • 将 opencv 作为依赖并不容易,它有自己的依赖。

标签: python linux ubuntu tkinter executable


【解决方案1】:

基本上,要使文件在 Unix 系统中可执行,您只需要做一件事:允许它执行(非常令人惊讶;))。为此,您必须使用chmod 命令,如下所示:chmod +x youfile.py+x 添加被执行的权限。

现在,您的系统将允许您执行脚本,但现在它只是一个简单的文本文件... Ubuntu 不知道他必须使用python 命令来运行它,所以您将拥有破坏行为。为了解决这个问题,我们使用 sha-bang 行(有关更多信息,请参阅 wikipedia page):在脚本的第一行,您必须编写 #! program_to_use,在您的情况下它是 python。一般来说,我们利用env变量,使用#! /usr/bin/env python,但你也可以选择你想要的python版本,#! /usr/bin/pythonX.X,其中X.X是python的版本。

【讨论】:

  • 这在 Ubuntu 中运行良好。但是,如果我在welcomeGUI.py 中使用了一些带有OpenCV 的代码并在Raspberry Pi 上运行此代码(而不在Raspberry Pi 中安装OpenCV),我该怎么办?我应该在 Raspberry Pi 中安装 OpenCV 还是有其他方法可以完成这项任务?
  • 我从未使用过 OpenCV,但如果您的树莓派连接到互联网,您可以使用 pip 安装它,或者尝试创建一个独立的 python(例如,参见 here)。最后,您可以尝试获取 openCV 文件(可能在 /use/lib 中)并将它们与您的可执行文件一起复制:它可能会起作用。
  • 可执行文件的概念(主要含义)与 Unix 无关。它只是一个图灵机代码(又名机器代码),可以直接在我们现代称为计算机(它实际上是处理器)的通用图灵机上运行。真正执行的一切都是在机器代码中执行的。 Linux 上的 +x 权限与此无关:应使完全可读的 bash 文本脚本可运行,并且显然不是机器可执行文件。
【解决方案2】:

1 - 在文件顶部添加以下行: #!/bin/env python(这可能因您的 ENV 变量而异)

2 - 通过以下方式使您的文件可执行:

a - 在 Unix 系统中,运行以下命令:

      `chmod +x myfile.py`

b - 在 Windows 系统中,您可以使用在 http://www.py2exe.org/

更多信息请见:

https://docs.python.org/2/faq/windows.html#how-do-i-make-an-executable-from-a-python-script

【讨论】:

  • 这行得通。我可以对任何类型的 python 文件做同样的事情吗?我的意思是如果我在我的 .py 文件中使用了 OpenCV,并且如果我在没有安装 OpenCV 的情况下运行此代码。
  • 是的,如py2exe教程页面所述:“py2exe将Python程序转换为可以在其他Windows计算机上运行的软件包,而无需在这些计算机上安装Python。Python是需要的运行 py2exe 本身的计算机,因为 py2exe 是一个 Python 程序,它在构建的包中包含 Python 的一部分。"
猜你喜欢
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
  • 2015-09-24
  • 2012-03-02
  • 2013-05-20
  • 1970-01-01
相关资源
最近更新 更多