بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
إنشاء برنامج محمول من خلال python و Gtk على ويندوز .
مقدمة :
أخيرا
بعد تجارب كثير pygobject على ويندوز من دون تثبيت شيء (ماعدا Visual C++
2010 Redistributable) أي أصبح برنامج محمول طبعا حجمه سيكون كبير 200mb
تقريبا لأنه يحتوي مفسر بايثون (الذي جربته على الأضمن 3.4.4 أي إخترت
إصدار قديم نسبيا) و gtk إصدار 3.24 .
مع الملاحظة بعض الأشياء لا تعمل مثلا أنا كنت عامل عند الضغط على مفاتيح Ctrl F تدخل للبحث عن الأحاديث هذا الإختصار لا يعمل على ويندوز و هناك شيء اخر مثلا عند الضغط على About النافذة الثانية لا تكون تابعة لنافذة البرامج الأساسي لاكنها بداية جيدة ربما هذه الأشياء لها حلول لم أبحث بعد.
قمت باﻷمر من خلال pygi-aio-3.24.1_rev1-setup ومن خلال التعديل على الملفات بشكل يدوي من خلال كتابة ملف bat جديد و ملف vbs والتلاعب داخلهم بالمسارات وجعلها مسارات نسبية .
مع الملاحظة بعض الأشياء لا تعمل مثلا أنا كنت عامل عند الضغط على مفاتيح Ctrl F تدخل للبحث عن الأحاديث هذا الإختصار لا يعمل على ويندوز و هناك شيء اخر مثلا عند الضغط على About النافذة الثانية لا تكون تابعة لنافذة البرامج الأساسي لاكنها بداية جيدة ربما هذه الأشياء لها حلول لم أبحث بعد.
قمت باﻷمر من خلال pygi-aio-3.24.1_rev1-setup ومن خلال التعديل على الملفات بشكل يدوي من خلال كتابة ملف bat جديد و ملف vbs والتلاعب داخلهم بالمسارات وجعلها مسارات نسبية .
أشياء سنحتاجها .
1-اولا مفسر بايثون 32bit إصدار 3.4.4 ممكن جلبه من الموقع الرسمي (إخترت 32bit حتى أضمن انه سيعمل على أي معمارية مع الملاحظة نختار ملف MSI installer و x86 تعني 32bit و x86_64 تعني 64bit) .
2-حزمة pygi-aio الإصدار الذي جربته حتى تاريخ كتابة هذا الشرح هو pygi-aio-3.24.1_rev1 حجمه تقريبا 215mb .
3-كما ذكرت لتشغيل البرنامج على أي نظام يجب ان تكون حزمة Visual C++ 2010 Redistributable مثبته.
4-البرنامج يجب ان يكون معمول بطريقة ممكن تشغيله بشكل محمول أي كل الملفات التي قد يحتاجها من ايقونة وغيره يجب أن نراعي يا اما تكون هذه الملفات جنبه يا اما نستخدم المسارات النسبية بمعنى لنفترض داخل البرنامج وضعت مسار الأيقونة إلى usr/share/myicon.png/ عند تشغيل البرنامج على ويندوز لن يعمل لأن هذا المسار غير موجود في ويندوز ممكن مثلا أن أضع الأيقونة إلى جانب البرنامج داخل مجلد إسمه مثلا icon ثم أضع المسار هكذا icon/myicon.png .
5-يجب ان نراعي الإختلافات التي قد تكون موجودة بين النظامين مثل المسارات وكما ذكرت في أول الموضوع بعض الأشياء لا تعمل مثل تحديد Ctrl F وهذه الأشياء أو مثلا المكتبات المستخدمة في البرنامج يجب ان تكون متوافقة مع ويندوز بشكل كامل وإذا كانت بشكل جزئي يجب معرفة هذه الأجزاء وموافقتها مع ويندوز أي قد يحتاج البرنامج أحيانا بعض التعديلات ليتوافق مع ويندوز .
لنبدأ سيكون الشرح بالصور وطويل تقريبا 30 صورة (هذا ما يناسبني ).
بعد تثبيت بايثون ندخل على مجلد المفسر ثم مجلد scripts الذي يحتوي بعض الأدوات مثلا pip ثم نضغط مفتاح Shift ثم من الفأرة المفتاح الأيسر Right Click مع الملاحظة في حال كنا أضفنا مسار بايثون إلى PATH لا نحتاج كل هذا فقط نفتح ال cmd من أي مكان على العموم من هناك كما في الصورة نثبت ما نحتاجه انا جربت تثبيت مكتبة six لدواعي الشرح فقط .
بعد تثبيت ما نحتاجه من مكتبات من خلال pip نشغل pygi-aio ثم نختار مجلد مفسر بايثون .
نختار مفسر واحد بالإصدار الذي نعمل عليه معنا هنا 3.4 .
نحدد ما نريد تثبيته على الأقل يجب ان نحدد Base Packages نحدد ما يناسبنا عن نفسي عندما كنت أجرب قمت بتحديد Pango شيء متعلق ب gdk pixbuf و +Gtk هناك أشياء أخرى مثلا Clutter وغيره على العموم كلما حددنا حزم أكثر كلما كبر حجم البرنامج في النهاية, لهذا قد يحتاج الأمر دراسة لمعرفت ما قد نحتاجه وما لا نحتاجه وأساسا أظن هناك مفسرات مصغرة ممكن إستخدامها لتقليل الحجم لاكن هذا ليس موضوعنا الان يمكنك أن تقوم بهذه التجارب بنفسك مثلا تجربت بيئة وهمية او مفسر مصغر وهذه الامور .
نختار ما يناسبنا عن نفسي لم أختار شيء هنا .
نختار ما يناسبنا عن نفسي إخترت Glade وهو لا دخل له ببرنامجنا الذي نعمل عليه أنا إخترته لأجربه على العموم الأفضل عدم إختيار شيء لا نحتاجه .
إنتهينا من pygi-aio .
أخذت نسخة عن مجلد المفسر وأعدت تسميته إلى إسم برنامجي الذي هو ahadis .
إبحثو في مجلد c:\windows عن ملف python34.dll وإنسخوه إلى مجلد المشروع الذي نعمل عليه أي إلى جانب ملف python.exe (ملاحظة نطابق إسم الملف مع الإصدار الذي نعمل عليه أي python 3.4 إسم الملف python34.dll ) .
جلبت برنامجي ووضعته داخل مجلد المشروع نلاحظ الملف التنفيذي للبرنامج موجود في مجلد إسمه src .
نقوم بإنشاء ملفين بإسم البرنامج واحد ينتهي ب bat وواحد ينتهي ب vbs .
داخل ملف bat نضع هذه الأسطر في الأسفل مع الملاحظة أني إستخدمت المسارات النسبية و \.. تعني المجلد الذي قبلي أو المجلد الأعلى أو المجلد الأب مثال مجلد Lib ومفسر بايثون python.exe وتوابعه ...إلخ موجودين عندي الأن في شيء كهذا .
C:\Users\yusuf\Desktop\ahadis
وملف bat موجود في هذا المسار .
C:\Users\yusuf\Desktop\ahadis\ahadis\src
بدل أن أكتب المسار المطلق مثلا لمفسر بايثون كاملا أي هكذا
C:\Users\yusuf\Desktop\ahadis\python.exe
أكتب ان مفسر بايثون موجود في المجلد الذي يسبقني (\..) عندها نصبح في .
C:\Users\yusuf\Desktop\ahadis\ahadis
لاكن معنا هنا المفسر موجود في المجلد الذي يسبقه أيضا عندها أضيف \.. أخرى فيصبح هكذا.
python.exe\..\..
سبب عدم إستخدام المسار المطلق لأن إسم المستخدم قد يختلف من جهاز لجهاز وأساسا البرنامج ليس بالضرورة أن يكون في مجلد Desktop ممكن نقله لأي مكان أتمنى أن تكون الفكرة وصلت .
@set PATH=..\..\Lib\site-packages\gnome;..\..\Lib\site-packages\..\..;..\..\Lib\site-packages\..\..\Scripts;%PATH%
@set TYPELIBDIR=..\..\Lib\site-packages\gnome\lib\girepository-1.0
@set GIRDIR=..\..\Lib\site-packages\gnome\share\gir-1.0
@set GNOMEDIR=..\..\Lib\site-packages\gnome
@echo off
START /B ..\..\python.exe ahadis
@set TYPELIBDIR=..\..\Lib\site-packages\gnome\lib\girepository-1.0
@set GIRDIR=..\..\Lib\site-packages\gnome\share\gir-1.0
@set GNOMEDIR=..\..\Lib\site-packages\gnome
@echo off
START /B ..\..\python.exe ahadis
التنسيق سيء على blogger نتأكد وأشدد على هذا نتأكد من تحديد كل شيء ثم نعمل نسخ copy ثم لصق paste في ملف bat (مع الملاحظة نستبدل ahadis بإسم الملف التنفيذي للبرنامج الخاص بك ).
نلاحظ عند تشغيل ملف bat سيعمل البرنامج لاكن ستظهر أيضا نافذة cmd وهنا يأتي دور ملف vbs للامانة ليس لدي خبرة كبيرة على ويندوز بهذه الأشياء لاكن بعد تجارب لم تنفع إلا هذه الطريقة نكتب داخل ملف vbs كما في الأسفل ونشغل لنجده يعمل من دون نافذة cmd .
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c ahadis.bat"
oShell.Run strArgs, 0, false
Dim strArgs
strArgs = "cmd /c ahadis.bat"
oShell.Run strArgs, 0, false
أيضا نتأكد من تحديد كل شيء ثم نعمل نسخ copy ثم لصق paste في ملف vbs (مع الملاحظة نستبدل ahadis.bat بإسم ملف bat للبرنامج الخاص بك ).
ممكن وضع ملف إختصار ووضع له أيقونة بعد تحويل الأيقونة إلى صيغة ico (هناك مواقع توفر هذه الإمكانية مجانا ولم أجرب البرامج لأن النسخة الذي كنت أستخدمها من ويندوز خام ليس فيها برامج وعلى السرعة إستخدمت موقع مجاني فقط إبحثو في جوجل ) .
أخيرا بعض الملاحظات .
هذا ملف ال bat الخام قبل تعديله ربما إذا إخترت حزم أكثر من pygi-aio قد يتغير عن الذي وضعته انا في اﻷعلى لهذا ستحتاج أخذ نسخة عنه وتعديله بنفسك بذات المبدأ أي المسارات النسبية .
إذا جربت البرنامج على جهاز أخر وحصلت على هذا الخطأ تكون Visual C++
2010 Redistributable غير مثبته.