打包Python应用程序为Linux

2024-10-01 00:15:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python和PyQt5制作了一个GUI应用程序。我想打包这个应用程序,但似乎没有一个直接的方法来做到这一点。此外,我找到的答案是打包一个python模块,而不是一个应用程序。我读了很多文章和官方文件,但似乎对此没有一个恰当的答案,虽然有一些解决办法可以达到同样的效果,我只想知道标准的方法是什么。在

这是我的目录结构:

Moodly/
    Moodly/
        __init__.py
        controller.py
        logic.py
        models.py
        view.py
        resoure.py
        style.py

        sounds/
             notify.wav
             message.wav

    setup.py
    MANIFEST.in
    setup.cfg
    run.py
    moodly.png
    Moodly.desktop

我想实现的目标是:给用户一个Moodly的tar文件。用户提取它,运行命令

^{pr2}$

在终端中,安装程序将所有文件放在适当的位置并创建一个Moodly.桌面文件可能在usr/local/share/applications中单击哪个用户可以运行应用程序。在

我的实现方法:

设置.py

from setuptools import setup

setup(

name="Moodly",

version="1.0",

author="Akshay Agarwal",

author_email="agarwal.akshay.akshay8@gmail.com",

packages=["Moodly"],

include_package_data=True ,

url="http://github.com/AkshayAgarwal007/Moodly",

entry_points = {
          'gui_scripts': [
              'moodly = Moodly.controller:main',
          ],
      },

# license="LICENSE.txt",

description="Student Intimation system",

# long_description=open("README.txt").read(),

# Dependent packages (distributions)
)

清单.in

include Moodly/sounds/notify.wav
include Moodly/sounds/message.wav

现在没有了设置.cfg我运行命令:

python setup.py install

这成功地将Moodly安装到/usr/lib/python-3.4/site-packages 伴随着声音目录。和现在从终端开始,当我情绪低沉地输入时(如设置.py)我的GUI应用程序启动成功。在

现在我只需要设置来创建Moodly.桌面与moodly.png在usr/local/share/applications中,我试图通过以下方式实现:

设置.cfg

[install]
install_data=/usr/local/share/applications

将此添加到设置.py

 data_files = [("Moodly", ["moodly.png","Moodly.desktop",])],

但这似乎以某种方式复制python-3.4/site-packages/Moodly中的文件,而不是指定的目的地,但它以前与distutils一起工作得很好

This guy also seems to have faced the same issue

我使用过的其他链接:

python-packaging

starting with distutils

所以我尝试的方法,有多少是正确的,标准的方法是什么。我怎么可能把它放在Moodly.桌面在正确的地方或者什么是更好的替代方法来完成整个过程。在

此外,使用Pyinstaller会是一个更好的主意。Pyinstaller会把PyQt5、requests和beautifulsoup4(我使用过的外部模块)打包成我不想要的应用程序。我想使用setuptools提供的install_requires选项,不需要让用户下载他们已经拥有的模块。在


Tags: 模块install文件方法用户py应用程序packages
1条回答
网友
1楼 · 发布于 2024-10-01 00:15:12

不应该使用Distutils安装.desktop文件。Distutils只关心安装Python包。在

要安装.desktop文件、图标和其他分发级打包附带的文件,您应该查看构建自动化系统,例如CMake。在

这个过程的第一步是让CMake构建一个Python项目。您应该在这里了解如何做到这一点:https://bloerg.net/2012/11/10/cmake-and-distutils.html

除此之外,安装.desktop文件也很容易。假设您已经编写了一个.desktop文件并将其放在某个位置,则安装该文件只需执行以下操作:

install(PROGRAMS com.akshay.moodly.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})

在你的CMakeLists.txt文件文件。在

请注意,您将.desktop文件安装到${XDG_APPS_INSTALL_DIR}(这是一个CMake变量),而不是像/usr/local/share/applications之类的硬编码路径。用户(几乎所有的自动发行版包生成器)都会将您的包安装到一个临时路径,然后将文件复制到他们的包中。永远不要假设你的应用程序会存在于/usr/bin或{}或其他任何地方。用户可以安装到/opt/Moodly甚至$HOME/Moodly。在

相关问题 更多 >