我在Linux上使用什么来使python程序可执行


87

我刚刚安装了一个Linux系统(Kubuntu),想知道是否有一个程序可以使python程序对于Linux可执行。




2
不,那里没有答案。该问题询问分配问题。
tzot

不,这不是骗子。这个问题与分发python软件有关,避免了库可用性和兼容性问题。
tzot

Answers:


155

只需将其放在脚本的第一行即可:

#!/usr/bin/env python

使文件可执行

chmod +x myfile.py

执行

./myfile.py

6
我很困惑。应该将散列设置为注释行时,“#!/ usr / bin / env python”如何工作?我尝试在没有哈希行的情况下运行脚本,但是没有用。所以很明显,这行是必需的,但是如果是注释,它如何工作?
导航

5
如果您要将脚本发送给其他程序员,那很好。但这不是将Python程序分发给最终用户的合适方法。如果用户未安装Python怎么办?如果他们这样做了,但是与您编写程序时使用的版本不同吗?总体而言,这仅适用于极少数用户,尤其是在Windows上。
乔纳森·哈特利

4
@MathManiac如果按照暗示进行操作,则大约15%的用户将无法运行您的应用程序。这将是一个残酷的支持负担,更不用说极度敌对的用户体验了,这将产生大量可恶的“应用程序X糟透了”的帖子。我坚持认为这不是将应用程序分发给最终用户的合适方法。
乔纳森·哈特利

2
@PrahladYeri使用#/ usr / bin / env python3
kingledion

3
@Nav叫做Shebang。已将其注释掉,因为它不应该由python解释。它向操作系统提供信息。更具体地说,它说应该使用什么程序来执行脚本。
MannyC '19

16

如果要在Python中获得独立的二进制应用程序,请尝试使用py2exe或PyInstaller之类的工具。


关键字:独立广告
D Adams

我可以反编译PyInstaller的输出吗?
2015年

13

您可以使用PyInstaller。它生成一个build dist,因此您可以将其作为单个“二进制”文件执行。

http://pythonhosted.org/PyInstaller/#using-pyinstaller

Python 3还具有创建build dist的本机选项:

https://docs.python.org/3/distutils/builtdist.html


问题不在于制作python脚本exe / elf文件
warvariuc 2014年

8
抱歉,但问题似乎就在此!“想知道是否有一个使python程序对于Linux可执行的程序。”
Leo Pepe 2014年

4

将这些行放在代码的开头,将告诉您的操作系统查找执行python脚本所需的二进制程序,即它是python解释器。

因此,这取决于保留python解释器的操作系统。由于我使用Ubuntu作为操作系统,/usr/bin/python因此它保留了python解释器,因此我必须在python脚本的开头编写此行;

#!/usr/bin/python

完成并保存代码后

  1. 启动命令终端

  2. 确保脚本位于您当前的工作目录中

  3. 类型 chmod +x script_name.py

  4. 现在,您可以通过单击脚本来启动脚本。出现一个警告框;在警报框中按“运行”或“在终端中运行”;或者,在终端提示下,键入./script_name.py


4

如果要使可执行文件 hello.py

首先使用以下命令在您的操作系统中找到python所在的路径: which python

它通常位于“ / usr / bin / python”文件夹下。

第一行hello.py应添加:#!/usr/bin/python

然后通过linux命令 chmod

一个应该使它像这样可执行: chmod +x hello.py

并执行 ./hello.py


1

我执行以下操作:

  1. 放#!/ usr / bin / env python3在脚本顶部
  2. chmod u + x file.py
  3. 在文件名中将.py更改为.command

这实际上将文件转换为bash可执行文件。当您双击它时,它将运行。这适用于基于Unix的系统。


0

另一种方法是创建别名。例如在终端写:

alias printhello='python /home/hello_world.py'

编写printhello将运行hello_world.py,但这只是暂时的。要使别名永久化,您必须将它们添加到bashrc中,您可以通过在终端中编写以下代码来对其进行编辑:

gedit ~/.bashrc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.