2015-12-26 4 views
4

Я создал приложение GUI с использованием python и PyQt5. Я хочу упаковать это приложение, но, похоже, нет прямого способа сделать это. Более того, я нашел ответы на вопрос о том, как упаковать модуль python, а не приложение. Я читал различные статьи и официальные документы, но по-прежнему не имею надлежащего ответа на это, хотя есть несколько обходных путей, через которые я мог бы добиться того же самого, я просто хочу знать, что является стандартным способом.упаковка приложение python для linux

Это моя структура каталогов:

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. Пользователь извлекает его, выполняет данную команду

python setup.py install 

в терминале, установка размещает все файлы в нужном месте и создает файл Moodly.desktop, вероятно, в USR/местные/доли/приложений, нажав на которую пользователь может запустите приложение.

Мой путь достижения этой цели:

setup.py

from setuptools import setup 

setup(

name="Moodly", 

version="1.0", 

author="Akshay Agarwal", 

author_email="[email protected]", 

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 Alongwith звуки Теперь directory.And от терминала, когда я набираю в moodly (как указано в пунктах въезда в setup.py) мое графическое приложение запускается успешно.

Теперь мне просто нужно настройки, чтобы создать Moodly.desktop Alongwith moodly.png в USR/местные/доли/приложений, которые я пытаюсь достичь через это:

setup.cfg

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

Добавление этого setup.py

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

Но это как-то S eems для копирования файлов внутри python-3.4/сайт-пакеты/Moodly, а не в указанном месте, но он используется для хорошо работать с Distutils

This guy also seems to have faced the same issue

Некоторые другие ссылки я использовал:

python-packaging

starting with distutils

Так что я пытаюсь это сделать, сколько это правильно и каков стандартный способ сделать это. Как я могу разместить этот Moodly.desktop в нужном месте или что может быть лучшим альтернативным способом для всего процесса.

Более того, использование Pyinstaller было бы лучше. Pyinstaller будет пакет приложения с PyQt5, запросы и beautifulsoup4 (внешние модули, которые я использовал), которые я не хочу. Я хочу использовать параметр install_requires, предоставляемый setuptools, и не лишним заставить пользователя загружать модули, которые у них уже есть.

ответ

2

Файл .desktop не должен устанавливаться с использованием Distutils. Distutils занимается только установкой пакетов Python.

Чтобы установить файлы .desktop, значки и другие файлы, относящиеся к упаковке уровня распространения, вы должны посмотреть на системы автоматизации сборки, такие как CMake.

Первым шагом в этом процессе является получение CMake для создания проекта Python. Вы должны посмотреть здесь, как это сделать: https://bloerg.net/2012/11/10/cmake-and-distutils.html

Помимо этого, установка файлов десктопов легко. Предполагая, что вы написали .desktop файл и поместить его куда-нибудь, установить его это дело делает:

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

в файле CMakeLists.txt.

Обратите внимание, что вы устанавливаете файл .desktop в ${XDG_APPS_INSTALL_DIR} (это переменная CMake), а не как hardcoded path, например /usr/local/share/applications или что-то в этом роде. Пользователь (и почти каждый автоматический сервер компоновки дистрибутивов) всегда будет устанавливать ваш пакет на временный путь, а затем копировать файлы в свои пакеты. Никогда не предполагайте, что ваше приложение будет жить в /usr/bin или /usr/local/bin или что угодно. Пользователь мог установить вещи в /opt/Moodly или даже $HOME/Moodly.

 Смежные вопросы

  • Нет связанных вопросов^_^