如何正确安装未打包(且没有安装程序)的 Python 应用程序

如何正确安装未打包(且没有安装程序)的 Python 应用程序

每隔几个月,我就会遇到一个我想在 Ubuntu 中安装的应用程序(java、python 等),但它不是 Linux 软件包,也没有任何附带的安装程序。这种情况并不常见,所以我通常忘记了正确的安装方法。不幸的是,大多数时候,安装说明都是这样的,而且真的没什么帮助:

... 一旦您解压缩了 program.zip 并安装了所需的依赖项,您应该能够使用此命令运行该应用程序::python /source/program-name.py 最好在您的平台上创建一个发出此命令的快捷方式。

有人可以(一步一步地)告诉我如何安装 python 应用程序,就好像它们是用“标准”包管理器安装的(作为 ubuntu/debian 包)吗?(我希望有一种更简单的方法来做到这一点,而不必自己创建一个包——甚至像我使用源文件安装应用程序时所做的那样——./configure->make->make install)。

1)我应该在哪里安装(移动?)python 文件(使用 Python2 还是 Python3 有关系,我应该在本地安装还是为所有用户安装),

2)我是否要更改 Python 文件/文件夹权限

3)如何创建带有图标的菜单项

4)以及其他任何正确安装应用程序所需的信息(包括我可以顺利卸载和升级的步骤)

我一直希望有人能创建一个脚本或 GUI 来引导我完成这些步骤...如果有这样的事情,那么请忽略上述内容,只需让我知道应用程序的名称以及在哪里可以找到它。

答案1

您实际上不必“安装”该应用程序。Python 应用程序是解释型的,这意味着源代码几乎是可执行的。

为了运行源代码,对于 ~/AppName/ 中名为 AppName.py 的文件,您可以打开命令行并输入

python ~/AppName/AppName.py

这将在您的 Ubuntu 版本附带的任何版本的 Python 中启动您的应用程序。您可以很容易地将其变成桌面快捷方式...但我现在不在 Ubuntu 中,所以我无法给您提供精确的说明,对此深表歉意。

  1. 将文件放在您想要的任何位置,只要您可以导航到该路径并在那里拥有权限​​。
  2. 您可能不需要更改任何权限。
  3. 这应该很容易,但我现在不在 Linux 中,所以希望其他人可以编辑这部分...抱歉。
  4. 没有别的了。你没有安装它,所以只要删除文件和你创建的快捷方式,它就会消失。升级可能涉及升级 python,但可能不会。

答案2

我找到了一种在 Ubuntu 中安装 Python 应用程序的好方法。

假设我们有一个应用程序 app.py。首先,通过以下方式使此文件可执行:

  1. 将适当的 shebang 添加到文件顶部。对于 Python3 应用程序,#!/usr/bin/env python3如果文件顶部尚未存在,则将其添加到文件顶部。对于 Python2 应用程序,请添加#!/usr/bin/env python

  2. 接下来,更改文件权限以允许任何用户执行$ chmod a+x app.py

如果您有一个可执行的 python 程序,例如由 pyinstaller 或类似程序制作的程序,您可以跳过前面的步骤,只需在接下来的步骤中 mv 该可执行文件即可。

此时,您可以简单地将此文件保存在任何您想要的地方,然后直接在终端中使用 执行它# /path/to/file。但是,这不是应用程序通常的安装方式……我认为正确的方法如下:

  1. 将文件移动到 /usr/bin/ 目录。这是使用 apt 或其他方法安装的其他应用程序的大部分可执行代码所在的位置。使用此命令执行此操作:$ mv app.py /usr/bin/app。之后,您只需运行以下命令即可随时从终端中的任何目录执行该应用程序:# app。请注意,我在移动文件时删除了“.py”...这是可选的,无论您在移动文件时将其命名为什么,它都会成为运行它的命令...

  2. 许多人可能会在这里停下来……但我更喜欢我的应用程序的最后一步。创建一个桌面文件touch app.desktop。一个简单的桌面文件包含以下内容:

[Desktop Entry] Type=Application Encoding=UTF-8 Name=App Comment=My custom app Exec=app Icon=/path/to/some/optional/icon.png Terminal=false

Exec 应设置为您在上一步中移动到 usr/bin/ 目录时为文件命名的任何名称。Icon 字段是可选的。如果您需要查看终端才能使用该应用程序,请将 Terminal 设置为 true。

使用以下命令将此文件保存到 /usr/share/applications/ 目录:$ mv app.desktop /usr/share/applications/

此时,您应该能够按下 super(windows) 键并开始输入名称(您在 .desktop 文件中列出的名称),然后会看到您的应用程序弹出为一个选项... 按 Enter 键或用鼠标单击它即可启动它。如果您愿意,可以右键单击该选项并添加到收藏夹。

要查看示例 hello world python 应用程序及其相应的桌面文件并安装 bash 脚本,请参阅我的项目:Hello_project

答案3

我同意,这是一种简单的方法,与我的方法类似。前段时间,我编写了一个小型 bash 脚本来安装到~/.local/...

以下是脚本,您需要编辑它以适合您的安装:

#! /bin/bash
## #############################################
## Install simpelregner application:
## simpelregner.py         ---> $HOME/.local/bin/
## simpelregner.ui         ---> $HOME/.local/bin/simpelregner/
## simpelregner-64.png     ---> $HOME/.local/bin/simpelregner/
## simpelregner.desktop    ---> $HOME/.local/share/applications/
## By Carl Friis-Hansen
## #############################################

## -------- Get path of this script --------
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
APPNAME="simpelregner"

## -------- Write the .desktop launcher file --------
echo \
"[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Application
Terminal=false
Name=$APPNAME
Exec=$HOME/.local/bin/$APPNAME.py
Path=
Comment=Simpel Regner
Icon=$HOME/.local/bin/$APPNAME/$APPNAME-64.png
Name[en]=simplecalculator"\
 | tee $HOME/.local/share/applications/$APPNAME.desktop
## -------- Executable .desktop launcher file --------
chmod +x $HOME/.local/share/applications/$APPNAME.desktop

## -------- Copy the rest of the files --------
cp $DIR/$APPNAME.py $HOME/.local/bin/$APPNAME.py
chmod +x $HOME/.local/bin/$APPNAME.py
mkdir -p $HOME/.local/bin/$APPNAME
cp $DIR/$APPNAME.ui $HOME/.local/bin/$APPNAME/$APPNAME.ui
cp $DIR/$APPNAME-64.png $HOME/.local/bin/$APPNAME/$APPNAME-64.png
cp $HOME/.local/share/applications/$APPNAME.desktop $HOME/Desktop/$APPNAME.desktop

## -------- Done, so message to user --------
echo
echo "-----------------------------------------------------------------"
echo "Simple Regner simpelregner er nu installeret"
echo
echo "Dobbeltklik på desktop ikonen simpelregner, enten på desktoppen eller i menuen."
echo "Første gang må du svare på, om du accepterer at køre programmet."
echo "-----------------------------------------------------------------"
echo

相关内容