سؤال

أحتاج إلى الحفاظ على عدد كبير من آلات Windows XP التي تعمل على نفس الإصدار من Python ، مع مجموعة متنوعة من الوحدات النمطية ، أحدها هو Python-Win32. فكرت في تثبيت Python على محرك الشبكة الذي يتم تثبيته بواسطة جميع آلات العميل ، وضبط المسار على العملاء. يبدأ Python بشكل جيد من الشبكة ، ولكن عند استيراد Win32com ، أحصل على خطأ منبثقة يقول:

نقطة إدخال الإجراء؟ pywinobject_ashandle yahpau_object@papaxh@z لا يمكن أن يكون موجودًا في مكتبة الارتباط الديناميكي pywintypes24.dll

بعد رفض مربع حوار الرسائل أحصل على وحدة التحكم:

المستورد: فشل تحميل DLL: لا يمكن العثور على الإجراء المحدد.

لقد بحثت في دليل Python للحصول على pywintypes24.dll وهو موجود في "lib site-packages pywin32_system32".

ما الذي أفتقده وهل هناك طريقة أخرى يمكنني من خلالها تثبيت وحدة Python + Python-Win32 + إضافية مرة واحدة وجعلها تعمل على العديد من الآلات؟ ليس لدي إمكانية الوصول إلى أدوات إدارة أنظمة Microsoft ، لذلك يجب أن أكون أكثر تقنية منخفضة من ذلك.

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

المحلول

على كل جهاز عليك تشغيله بشكل أساسي pywin32_postinstall.py -install بمجرد. على افتراض أن تثبيت Python الخاص بك على الشبكة N:\Python26, ، قم بتشغيل الأمر التالي على كل عميل:

N:\Python26\python.exe N:\Python26\Scripts\pywin32_postinstall.py -install

شيء مهم آخر هو Good Luck!. والسبب هو أنك قد تحتاج إلى القيام بذلك كـ admin. في حالتي ، عمل هذا الإعداد للجميع باستثناء جهاز كمبيوتر واحد. ما زلت لا أعرف السبب.

نصائح أخرى

يبحث Python (أو على وجه التحديد ، نظام التشغيل) عن DLLs باستخدام OS.Environ ["path"] وليس عن طريق البحث في Sys.Path.

لذلك يمكنك بدء تشغيل Python باستخدام ملف .cmd بسيط بدلاً من ذلك والذي يضيف server share python26 إلى المسار (بالنظر إلى التثبيت (أو أنت) نسخ dlls من server share python26 lib site-packages pywin32-- System32 to server share python26).

أو يمكنك إضافة الكود التالي إلى البرامج النصية الخاصة بك قبل أن تحاول استيراد Win32Api وما إلى ذلك:

    # Add Python installation directory to the path, 
    # because on Windows 7 the pywin32 installer fails to copy
    # the required DLLs to the %WINDIR%\System32 directory and
    # copies them to the Python installation directory instead.
    # Fortunately, in Python it is possible to modify the PATH
    # before loading the DLLs.
    os.environ["PATH"] = sys.prefix + ";" + os.environ.get("PATH")
    import win32gui
    import win32con

"" "لقد بحثت في دليل Python للحصول على pywintypes24.dll وهو موجود في" lib site-packages pywin32_system32 "" "". وجود DLL ليس في السؤال. هل نقطة الدخول هذه في ذلك DLL؟

هل حاولت تثبيت نفس التكوين بالضبط على محرك أقراص غير شبكية؟

هل حاولت استيراد وحدات أخرى في الحزمة؟

هل راجعت DLLs مع مشاة التبعية أو شيء مشابه؟

هل "24" في PywinTypes24.dll يعني Python 2.4؟ ما هو إصدار Python الذي تقوم بتشغيله؟

يمكنك استخدام ملفات الدُفعات التي تعمل عند التمهيد ل

  • قم بتركيب مشاركة الشبكة (net use \\server\share)
  • انسخ مثبتات Python و Packages من مشاركة الشبكة إلى مجلد محلي
  • تحقق من إصدار مثبت MSI مقابل الإصدار المثبت
  • إذا كان مختلفًا ، قم بإلغاء تثبيت Python وجميع الحزم المعتمدة على الإصدار
  • أعد تثبيت جميع الحزم

سيكون هذا إلى حد كبير نظام الإدارة المركزي الخاص بك لهذا البرنامج.

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