سؤال

سوف أعترف أنني جديد جدا في بيثون وأنا لا أعرف حقا ما أفعله بعد. لقد أنشأت مؤخرا تطبيق Windows صغير جدا باستخدام Python 2.6.2 و Wxpython 2.8. ويعمل عظيم أنا سعيد للغاية بمدى عمله بشكل طبيعي. عادة ما أقصد عندما استدعاءها مباشرة من خلال مترجم ثعبان، مثل هذا:

> python myapp.py

ومع ذلك، أردت أن أذهب خطوة أخرى وتجميع هذا في الواقع في ملف قابل للتنفيذ مستقل. لذلك اتبعت هذه التعليمات من Wxpython Wiki الذي يستخدم Py2exe. في البداية، أعطاني أخطاء في سطر الأوامر، قائلا كان msvcr90.dll مفقود. ثم قمت بنسخ msvcr90.dll إلى مجلد python dlls الخاص بي. التي نظرت إلى البداية مثلها إصلاحها، لأنها نجحت في فعل ما هو مطلوب للقيام به. لقد انتهيت من تحذير سريع بوجود بعض ملفات DLL، يعتمد البرنامج على أو قد تحتاج أو لا يحتاج إلى توزيعها.

لذلك انتقلت إلى مجلد Dist الذي تم إنشاؤه Py2exe وحاول تشغيله القابل للتنفيذ. لكن محاولة فتحها فقط برزت حوار خطأ قال:

This application failed to start because MSVCR90.dll was not found.
Re-installing the application may fix this problem.

لذلك ذهبت إلى الأمام ونسخ msvcr90.dll مرة أخرى في مجلد هذا الحظ. لكن هذا لم يفعل الخدعة. ثم قمت بنسخه إلى دليل Windows System32. هذا لم يفعل ذلك أيضا. ما الذي يجب علي فعله للحصول على هذا الشيء للعمل؟

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

المحلول

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

راجع القسم "نشر DLLS مكتبة Visual C ++ كجمعيات خاصة" هنا: كيفية النشر باستخدام Xcopy للحصول على التفاصيل، ولكن في الأساس تطبيقك يبدو وكأنه هذا:

c:\My App\MyApp.exe
c:\My App\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest
c:\My App\Microsoft.VC90.CRT\msvcr90.dll

فائدة واحدة من هذا هو أن المستخدمين غير المسؤولين يمكنهم استخدام تطبيقك (أعتقد أنك بحاجة إلى أن تكون مسؤول لتثبيت وقت التشغيل عبر المثبت القابل لإعادة التوزيع). وليس هناك حاجة لأي مثبت - يمكنك فقط نسخ الملفات على جهاز كمبيوتر وكل شيء يعمل.

نصائح أخرى

وأعتقد أن التثبيت حزمة Microsoft C ++ إعادة التوزيع سوف تثبيت DLL الذي تحتاجه بشكل صحيح.

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