Pythonturtle: بناء حزم المثبت تلقائيًا

تم إنشاؤها على ٢٣ سبتمبر ٢٠١٨  ·  31تعليقات  ·  مصدر: PythonTurtle/PythonTurtle

متابعة المشكلات https://github.com/cool-RR/PythonTurtle/pull/105#issuecomment -421965482 و # 106 و # 90 ، أود أن أبدأ في جمع معلومات حول كيفية (أفضل) القيام بالتعبئة للجميع المنصات التي يعمل عليها PythonTurtle. عندما نعرف كيفية تنفيذ التعبئة يدويًا ، سيكون من السهل أتمتة كل شيء.

بعبارة أخرى ، نحن بحاجة

  1. قائمة بأنواع الحزم المستهدفة (مثل MSI لنظام التشغيل Windows و macOS AppImage و Debian DEB و RPM و Snap) و
  2. قائمة كاملة من الخطوات الملموسة والمفصلة ( اقرأ: أوامر الصدف) لكيفية بناء كل نوع حزمة ، من كود المصدر الذي يعيش في التحكم بالمصادر فقط.

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

automation

التعليق الأكثر فائدة

يمكن أن يكون الشيء الرائع التالي بعد الحصول على EXE لنظام التشغيل Windows والحزم الخاصة بعمل macOS هو إنشاء AppImage لنظام التشغيل Linux. هذا شيء مشابه لملف .dmg على جهاز Mac. سيكون حلاً منفردًا لجميع توزيعات جنو / لينكس! : تادا:: مبتسم:

يحتوي AppImage أيضًا (إلى حد ما) على AppStore ، يطلق عليه AppImageHub . والمقارنة تجعلك تفهم أنه أمر رائع حقًا. : +1:

ال 31 كومينتر

يبدو أننا نستخدم py2exe و py2app لنظامي التشغيل Windows و

وفقًا لمحادثة حديثة في PyCon Otto ، يجب أن ننتقل إلى

أوافق على أنه يجب علينا بالتأكيد استخدام PyInstaller بدلاً من py2exe و py2app.

وأنا أوافق على أننا بحاجة إلى عملية بناء موثوقة وتلقائية.

يجب ألا ننسى أيضًا إنشاء حزمة PythonTurtle Python ودفعها إلى PyPI عند إصدارها.

أقترح أيضًا تشغيل الإصدارات عن طريق دفع علامة Git (برقم الإصدار) إلى مستودع GitHub. يمكن بعد ذلك تنزيل أدوات التثبيت عبر صفحة الإصدار . آمل أن يكون كل هذا ممكنًا بطريقة سلسة.

أوافق ، على الرغم من أن هذا النوع من الأتمتة يعد هدفًا عاليًا بعض الشيء ، إذا وصلنا إلى النقطة التي يمكننا فيها إصدار إصدار ، فسأكون سعيدًا.

إذا وصلنا إلى النقطة التي يمكننا فيها إطلاق سراح ، فسأكون سعيدًا.

ثم قم بإعداد بدلة الفضاء الخاصة بك! :ابتسامة:

كما هو مشتبه به ، سيتطلب PyInstaller التشغيل على البنية التحتية التي يجب أن يبني المثبت لها (على سبيل المثال على Windows لمثبت Windows ، على Mac لمثبت macOS).

ليس لدي أي من Windows و Mac. ومن ثم ، فأنا بحاجة إلى القيام باكتشاف مرهق لكيفية تنفيذ البناء على AppVeyor. أيضًا ، نحتاج إلى نظام تشغيل macOS مثبت عليه Python 3 (واعتبر أن الوثائق قديمة فقط ويمكننا أيضًا البناء باستخدام Python 3).

من الأفضل أن أبدأ بأتمتة إنشاء حزمة Python (وتحميلها إلى PyPI تلقائيًا). IIUC ، هناك حاجة إلى setup.py للبناء باستخدام (بعض ميزات) PyInstaller ، على أي حال.
سيكون لدينا طريقة واحدة ممكنة لتثبيت PythonTurtle بالفعل بهذه الطريقة.

هل تريد إضافتي بصفتي مشرفًا إلى مشروع PyPI ؟ سيسهل علي أتمتة الأشياء عندما يمكنني استخدام بيانات الاعتماد الخاصة بي. اسم المستخدم الخاص بي هو "bittner" ، مما لا يثير الدهشة.

لقد أضفتك بصفتك مشرفًا على PyPI.

فيما يتعلق بـ PyInstaller ، أتساءل عما إذا كان جهاز VM مع ReactOS سيعمل على إنشاء مثبت Windows.

لجعل pip install PythonTurtle ثبّت البرنامج وكل التبعيات المطلوبة صعبة:

الاستنتاجات:

  • _could_ نضيف install_requires=['wxPython'] إلى setup() ، لكن هذا سيفشل ما لم تكن المتطلبات الأساسية ( المذكورة في README ) مثبتة بالفعل. قد نتمكن من اكتشاف - خطأ تقني للغاية - وطباعة تلميح مفيد في حالة فشل التثبيت.
  • كبديل ، قد نثق في المستخدمين لتنفيذ خطوات التثبيت في README والسماح لـ PythonTurtle بطباعة _ تذكير سهل عندما يتعذر استيراد الوحدة النمطية wx ( ModuleNotFoundError في وحدة التطبيق ).

قد يكون القيام إما بطريقة "الاكتشاف التلقائي للمتطلبات الأساسية" سهلة الاستخدام باستخدام platform.release() و / أو os.name ممكنًا ولكنه أيضًا مرهق للغاية. أقترح ، نحن ببساطة نطبع رسالة نصية ونرجع إلى قسم التثبيت في README بعنوان URL.

أتساءل عما إذا كان جهاز VM مع ReactOS سيعمل على إنشاء مثبت Windows.

لست متأكدًا من كيفية استخدامنا لجهاز افتراضي على خدمة في السحابة من شأنها أن تبني حزمة PythonTurtle بطريقة آلية. هل يمكنك التفصيل؟ (هل تنوي الاستخدام المحلي على جهاز المطور فقط؟)

أنت على حق ، لم أفكر في ذلك.

أعتقد أن هناك سؤالين:

  1. هل يمكن أن يعمل ReactOS على إنشاء مثبت Windows باستخدام PyInstaller؟

  2. هل يمكننا إعداده للعمل تلقائيًا على السحابة؟

لنفترض أن الإجابة على السؤال الأول هي نعم ، ولا يوجد مزود SaaS يقدم هذه الخدمة. ثم لنقل أنه يمكننا إعداد صورة Docker تقوم بتشغيل VirtualBox مع ضيف ReactOS. ربما يمكننا العثور على موفر SaaS يقوم بتشغيل صورة Docker هذه لنا؟

يحتوي https://github.com/pypa/python-packaging-user-guide/issues/267 على عدد غير قليل من الروابط المثيرة للاهتمام لتعبئة تطبيقات Python.

بمجرد تسوية تحميل حزمة Linux إلى GitHub (عبر PR # 123) ، سننتقل إلى قطار CI لنظام macOS ، نعم! : يم:

يمكن أن يكون الشيء الرائع التالي بعد الحصول على EXE لنظام التشغيل Windows والحزم الخاصة بعمل macOS هو إنشاء AppImage لنظام التشغيل Linux. هذا شيء مشابه لملف .dmg على جهاز Mac. سيكون حلاً منفردًا لجميع توزيعات جنو / لينكس! : تادا:: مبتسم:

يحتوي AppImage أيضًا (إلى حد ما) على AppStore ، يطلق عليه AppImageHub . والمقارنة تجعلك تفهم أنه أمر رائع حقًا. : +1:

يبدو أمرا جيدا لي!

اعتبارًا من الآن ، لا يعمل إنشاء حزمة تطبيق على macOS (باستخدام PyInstaller) بشكل كامل. كبديل ، أعتقد أنه يمكننا إنشاء صيغة البيرة. أنا الآن أبحث في الوثائق ذات الصلة:

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

فيما يلي الصيغ المتعلقة ببايثون (3):

  • Python (يبدو أنه يثبت 3.7 ؛ Python @ 3 هو رابط رمزي ، يسمى "الاسم المستعار")
  • wxPython (يعتمد على Python @ 2 ، راجع أيضًا https://github.com/Homebrew/homebrew-core/issues/32744)

قد يكون كافياً الاعتماد على Python@3 (= 3.7) وتثبيت wxPython عبر النقطة ( كما في اختباراتنا ).

للإشارة فقط ، إذا لم تعمل الإصدارات التلقائية (ربما لن تعمل حاليًا نظرًا لأن api_key: تم تعيينه على قيمة عينة فقط ) ، فإليك كيفية قيام مشروع VSCodium بالإصدارات التلقائية على GitHub. : +1:

رام ، لقد ذكرت "مثبت Windows" ليكون أولوية قصوى في الوقت الحاضر. أنا أوافق.

دعونا نلاحظ الوضع الحالي للاتحاد.

Windows Installer (نظرة عامة على التقدم)

  • تعمل إصدارات Windows
  • هذه البنيات تنشئ Windows .EXE ثنائي ومثبت MSI (انظر مثال الوظيفة ).
  • حجم ملف مثبّت MSI. صغير جدًا لدرجة أنه يشير إلى أنه فارغ بالفعل.
  • أذكر ، لقد جربت ملف .EXE (عن طريق تنزيله وتشغيله) وأكدت أن MSI لن يعمل. (أو هل كان هذا شخصًا آخر اختبرها من أجلي؟ لست متأكدًا).
  • أذكر ، لقد ذكرت في مشكلة أخرى (أو كانت محادثة خاصة منا؟) ما هو المطلوب لإنشاء مثبّت MSI عامل (إنه في الواقع مجرد ملف مشروع MS Visual Studio ، أو نحو ذلك).

أعتقد أنني أعددت كل شيء. الآن ، نظرًا لأنني لا أمتلك جهاز كمبيوتر يعمل بنظام Windows ولا أخطط لشراء واحد (نفس الشيء بالنسبة لنظام macOS ، بالمناسبة) ، فإن الشيء الوحيد المفقود هو شخص يتولى المسؤولية ويضع قطعة اللغز المفقودة في مكانها. من وجهة نظري الغريزية ، نحن قريبون حقًا من "اكتمال المهمة".

الخطوات التالية (مطلوب تطوع)

يبدو أن كل ما عليك فعله هو إنشاء التكوين الضروري باستخدام ملحق Microsoft Visual Studio Installer Projects ، وفقًا لإجابة على StackOverflow .

ومن ثم ، هل يمكنك تولي الأمر؟ ما يجب القيام به ، IIUC ، هو:

  1. قم بإنشاء مشروع Visual Studio مع إعداد برنامج التثبيت
  2. تأكد من أن برنامج التثبيت يبني بنجاح على جهازك المحلي
  3. أضف الملف .vdproj لهذا المشروع

سيكتشف AppVeyor بعد ذلك هذا الملف ، ويبني المثبت ويوفره للتنزيل في صفحة الإنشاءات Artifacts .

مراجع

من وجهة نظري الغريزية ، نحن قريبون حقًا من "اكتمال المهمة".

لا أشعر أنه إذا بدأت العمل عليه ، فسيكون قريبًا من الاكتمال. لا أعرف حتى كيفية استخدام Visual Studio Project ، أو ما هي خطتنا الحالية. إذا اضطررت إلى تولي هذه المهمة ، فأعتقد أن الأمر سيستغرق بضعة أيام من العمل بدوام كامل.

لقد بذلت الكثير من الجهد في هذا الأمر ، لذا لا أشعر بالرضا حيال إخبارك بهذا ، لكنني بالتأكيد لن أتطوع للعمل في هذه المسألة. لم تقترب PythonTurtle من أن تكون أولوية في حياتي في الوقت الحالي حيث قضيت أكثر من ساعة ، على القمة ، في تحسينها.

هل أنا منزعج من الإشارة إلى هذه القضية من قضايا أخرى ، قائلا لا شيء يستحق أي شيء بدون هذه المشكلة؟ لن أمنعك من العمل على أي مشكلات أخرى ، ربما لن أنضم لأن هذا الجهد يبدو لي ضائعًا ، لكنني لن أحظرك ، وإذا كنت بحاجة إلي لمراجعات التعليمات البرمجية أو الأشياء الصغيرة ، سأكون سعيدا للقيام بذلك.

وجود فكرة أخرى في هذا. أنت تقول "ليس لدي جهاز كمبيوتر يعمل بنظام Windows ولا أخطط لشراء واحد". إذا كان اعتراضك على القيام بالعناصر التي أدرجتها هو أنك فعلت ما يكفي في هذه التذكرة ، أو أنك تفضل عدم قضاء وقتك في القيام بأشياء متعلقة بـ Windows ، إذن نعم ، هذا اعتراض عادل.

إذا كانت المشكلة هي أنك لا تريد إنفاق الأموال على ترخيص Windows ، فربما يكون ذلك قابلاً للحل. تتمثل إحدى الأفكار في استخدام ReactOS ، ومعرفة ما إذا كان ذلك يؤدي إلى تشغيل Visual Studio Project. إذا لم يكن ReactOS خيارًا ، فربما يمكنني الحصول على ترخيص / جهاز Windows لك. اسمحوا لي أن أعرف إذا كان ذلك مفيدًا.

اسمحوا لي أن أعرف إذا كان ذلك مفيدًا.

هل تعرف شخصا متحمسًا للبرمجة على الويندوز؟ يعد Windows بيئة فوضوية لبيثون. لا أريد المساهمة في صورة خاطئة لـ "Python + Windows" تتلاءم جيدًا معًا ، هذا كل شيء.

راجع https://github.com/PythonTurtle/PythonTurtle/issues/108#issuecomment -683420022 للحصول على حلول بديلة لبناء مثبّت MSI (WiX، WiX.Py ). قد نكون ناجحين بهذه الطريقة بالاشتراك مع إجراءات GitHub. هل يريد شخص ما أن يعطي تلك اللقطة؟

هل يريد شخص ما أن يعطي تلك اللقطة؟

لا أفعل ، لذا أعتقد أننا سننتظر حتى وصول متطوع محتمل.

قائمة المهام ...

  • [] __inux__: تم بناء pyinstaller بنجاح

    • [] آلي على إجراءات جيثب

  • [] __macOS__: نجح إنشاء pyinstaller

    • [] آلي على إجراءات جيثب

  • [] __Windows__: نجح إنشاء pyinstaller

    • [] آلي على إجراءات جيثب

بعض التلميحات لمساعدتك على إحراز تقدم:

  • [x] باستخدام python3 setup.py clean bundle يمكنك إنشاء جميع الحزم الثنائية (يتم استخدام PyInstaller).
  • [x] تم إنشاء الثنائيات
  • [] يبدو أن مستخدمي Windows يتوقعون وجود مثبت Windows ؛ يمكن أن يكون هذا مثبّت MSI أو WiX.Py (لم يتم تجهيز كلاهما بعد).
  • [] يجب أن تدفع إجراءات GitHub إصدارات GitHub الخاصة بنا كلما دفعنا علامة Git إلى master ؛ قد نرغب في استخدام شيء مثل الإجراءات / إنشاء الإصدار لجعل هذا أقل صعوبة بالنسبة لنا.

لقد تلقينا إجابة رائعة من judej على طلب مجتمع مطوري Microsoft

خلاصة القول: لا يوجد متطوع من MSI بالنسبة لنا ، ولكن هناك مشروعان آخران مثيران للاهتمام ، أحدهما يقوم ببناء برنامج التثبيت والآخر يبني تطبيق Python ZIP :

  1. pynsist - أداة لبناء مثبتات Windows لتطبيقات Python الخاصة بك. [...] قم بتجميع Python نفسها ، بحيث يمكنك توزيع تطبيقك على الأشخاص الذين ليس لديهم Python مثبتًا_
  2. shiv - _ لبناء تطبيقات Python zipapps ذاتية الاحتواء بالكامل كما هو موضح في PEP 441 ، ولكن مع تضمين جميع تبعياتها! _

يمكن أن يكون هناك بديلان جيدان يستحقان التقييم. شكرا جود! : 100:: ميدالية عسكرية:

رائع. لقد سمعت مؤخرًا عن PyOxidizer . ما زلت غير متأكد بنسبة 100٪ من فهمي للمشروع ( المناقشة ) ولكن من الممكن أن يفعل ما نريد.

سأحاول القيام بذلك باستخدام shiv خلال عطلة نهاية الأسبوع. يرجى تجربة PyOxidizer وبعد ذلك يمكننا مقارنة الملاحظات.

آسف ، لقد بدأت عملاً جديدًا منذ أيام قليلة ولن يكون لدي الوقت لفعل أي شيء :(

PyOxidizer بمثابة تجربة بالنسبة لي: تطبيق Python يعمل على "Rust VM" ، وهي طبقة نظام تشغيل أصلي تم إنشاؤها باستخدام Rust. لست متأكدًا من الفائدة التي يوفرها هذا. ألا يعمل إعداد PyInstaller الذي نقوم بتشغيله على ما يرام؟ : 3rd_place_medal:

shiv هو أسلوب جديد تمامًا (جديد في "مجموعة" أدوات الإصدار الخاصة بنا) ، والذي قد يكون من المثير للاهتمام تقديمه لجمهورنا. أجد الفكرة مثيرة (على الرغم من أنني سأكون مستعدًا للمراهنة على أن قلة من الناس قد يستخدمونها). : 2nd_place_medal:

pynsist مثل برنامج تثبيت Microsoft Windows الذي نبحث عنه. قد يوفر هذا تجربة المستخدم التي يبدو أن مستخدمي Windows يتوقعونها: واحد: مثبت التنزيل ،: اثنان: قم بتشغيله لتثبيت وإضافة إدخال قائمة البدء ،: ثلاثة: بدء التطبيق من قائمة البدء. : 1st_place_medal:

الجانب السلبي من pynsist هو Windows فقط. سأحاول تطوير Shiv (من LinkedIn) على Mac و Linux.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات