كيفية توزيع ملفات وأيقونات ".desktop" لحزمة Python في Gnome (باستخدام distutils أو setuptools)؟
-
20-08-2019 - |
سؤال
أستخدم حاليًا الأدوات التلقائية لإنشاء/تثبيت وحزم مشروع خاص بي، ولكنني أرغب حقًا في الانتقال إلى شيء يبدو أكثر "بيثوني".
يتكون مشروعي من نصين، ووحدة واحدة، ووصفين لواجهة المستخدم الرسومية، وملفين بتنسيق .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 أكثر لغة بايثونية (الصريح أفضل من الضمني).