كيفية توزيع ملفات وأيقونات ".desktop" لحزمة Python في Gnome (باستخدام distutils أو setuptools)؟

StackOverflow https://stackoverflow.com/questions/501597

سؤال

أستخدم حاليًا الأدوات التلقائية لإنشاء/تثبيت وحزم مشروع خاص بي، ولكنني أرغب حقًا في الانتقال إلى شيء يبدو أكثر "بيثوني".

يتكون مشروعي من نصين، ووحدة واحدة، ووصفين لواجهة المستخدم الرسومية، وملفين بتنسيق .desktop.إنه حاليًا مشروع بيثون خالص، على الرغم من أنه من المحتمل أن يتغير قريبًا.

بالنظر إلى أدوات الإعداد، يمكنني بسهولة معرفة كيفية التعامل مع كل شيء باستثناء ملفات .desktop؛يجب أن ينتهي بهم الأمر في دليل محدد حتى يتمكن جنوم من العثور عليهم.

هل يعد استخدام أدوات distuils/setuptools فكرة جيدة للبدء بها؟

هل كانت مفيدة؟

المحلول

لقد تمكنت من تنفيذ هذا الأمر، لكن الأمر يبدو لي أشبه بـ الحل البديل.

لا أعرف ما هي الطريقة المفضلة للتعامل مع هذا ...

لقد استخدمت ما يلي setup.py الملف (النسخة الكاملة هي هنا):

from setuptools import setup

setup(
  # ...
  data_files=[
    ('share/icons/hicolor/scalable/apps', ['data/mypackage.svg']),
    ('share/applications', ['data/mypackage.desktop'])
  ],
  entry_points={
    'console_scripts': ['startit=mypackage.cli:run']
  }
)

حوض البرنامج النصي المبدئي entry_points يعمل.لكن ال data_files حيث يتم وضعها في ملف بيضة وليس في المجلدات المحددة، بحيث لا يمكن الوصول إليها عن طريق غلاف سطح المكتب.

للتغلب على هذا، استخدمت ما يلي setup.cfg ملف:

[install]
single-version-externally-managed=1
record=install.txt

هذا يعمل.يتم إنشاء كلا ملفي البيانات في المكان المناسب و .desktop تم التعرف على الملف بواسطة Gnome.

نصائح أخرى

في عام، نعم - كل ما هو أفضل من autotools عند بناء مشاريع بيثون

ولدي تجارب جيدة مع setuptools حتى الآن. ومع ذلك، وتركيب الملفات في مواقع ثابتة ليست قوة setuptools - بعد كل شيء، انها ليست شيئا لبناء installaters لتطبيقات بيثون، ولكن توزيع المكتبات بيثون

لتركيب الملفات التي ليست ملفات بيانات التطبيقات (مثل الصور والملفات UI الخ) ولكنها توفر الاندماج في نظام التشغيل، وكنت أفضل حالا باستخدام شكل التعبئة والتغليف الحقيقي (مثل RPM أو ديب).

وقال ذلك، لا شيء يتوقف عليك من وجود عملية الإنشاء على أساس setuptools وملف جعل صغير لتثبيت كل شيء في مكانه الصحيح.

ويمكنك محاولة استخدام بيثون distutils-اضافية . وحدة DistUtilsExtra.auto تلقائيا <لأ href = "http://bazaar.launchpad.net/~python-distutils-extra-hackers/python-distutils-extra/debian/annotate/head:/doc/README" يختلط = "نوفولو noreferrer "> يدعم .desktop الملفات، فضلا عن ملفات الفسحة / GtkBuilder .ui، وحدات بيثون والكتابات، وملفات البيانات متفرقات، الخ.

ويجب أن تعمل مع كل من Distutils وSetuptools.

لقد خلقت https://pypi.python.org/pypi/install-freedesktop.يقوم بإنشاء ملفات .desktop تلقائيًا لنقاط إدخال gui_scripts، والتي يمكن تخصيصها من خلال وسيطة الإعداد، ويدعم --user وكذلك التثبيت على مستوى النظام.مقارنة ب DistUtilsExtra, ، إنه أضيق نطاقًا و IMHO أكثر لغة بايثونية (الصريح أفضل من الضمني).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top