【发布时间】:2016-04-01 04:19:08
【问题描述】:
我使用 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 文件。用户解压,运行命令
python setup.py install
在终端中,安装程序将所有文件放在适当的位置并创建一个 Moodly.desktop 文件,可能在 usr/local/share/applications 点击哪个用户可以运行该应用程序。
我的实现方式:
setup.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)
)
MANIFEST.in
include Moodly/sounds/notify.wav
include Moodly/sounds/message.wav
现在没有 setup.cfg 我运行命令:
python setup.py install
这成功地将 Moodly 安装到 /usr/lib/python-3.4/site-packages 连同声音目录。现在,当我从终端输入时(在 setup.py 的入口点中指定),我的 GUI 应用程序成功启动。
现在我只需要在 usr/local/share/applications 中创建 Moodly.desktop 和 moodly.png 的设置,我试图通过这个来实现:
setup.cfg
[install]
install_data=/usr/local/share/applications
将此添加到 setup.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
我使用的其他一些链接:
所以我尝试这样做的方式,其中有多少是正确的,以及执行它的标准方式是什么。我怎样才能将 Moodly.desktop 放在正确的位置,或者有什么更好的替代方法来完成整个过程。
此外,使用 Pyinstaller 是一个更好的主意。 Pyinstaller 会使用我不想要的 PyQt5、requests 和 beautifulsoup4(我使用的外部模块)打包应用程序。我想使用 setuptools 提供的 install_requires 选项,而不是让用户下载他们可能已经拥有的模块。
【问题讨论】:
标签: python linux pyqt setuptools distutils