سؤال

أحاول استخدام Pyuno كوسيلة لتحويل تنسيقات المستندات المختلفة (DOC ، WordPerfect ، HTML ، إلخ) إلى PDF من داخل خادم Django الخاص بي. أواجه وقتًا في الحصول على وقت import uno للعمل. يبدو أنه يفشل عند القيام به import pyuno, ، مع رسالة ImportError: DLL Load Failed: The specified module could not be found.

الطريقة الوحيدة التي يمكنني من خلالها الحصول على هذا العمل هي استخدام Python 2.6 الذي جاء مع OpenOffice ، لكنني أريد حقًا استخدام التثبيت 2.6 الآخر. مستندات Pyuno كلها من Python 2.2 ، وتشتهر بأن تكون بعيدة عن التاريخ.

أظن أنه يجب نسخ بعض (أو جميع) الملفات التالية من دليل OpenOffice إلى دليل حزم الموقعي (أو بعض الدليل الفرعي لها):

pythonloader.py
pythonloader.uno.ull
pythonloader.uno.ini
pythonscript.py
pyuno.pyd

هل حقق أي شخص أي نجاح في الحصول على هذا للعمل؟

هذا على Windows.

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

المحلول

لمجرد التحويلات ، لا تحتاج إلى إعادة اختراع العجلة. انظر إلى Unoconv: http://dag.wieers.com/home-made/unoconv/

ستعمل "استيراد UNO" تلقائيًا إذا تم تجميع مترجم Python مع OpenOffice ، أو في بعض أنظمة Linux حيث قام الحزمون بالكثير من العمل من أجلك بالفعل.

البديل 1: بالنسبة لتثبيتات Python الأخرى على أنظمة Win32 ، تحتاج إلى استيراد ثلاثة متغيرات بيئة وإضافة عنصر واحد إلى Pythonpath الخاص بك. البرنامج التعليمي التفصيلي في http://user.services.openoffice.org/en/forum/viewtopic.php؟f=45&t=36370&p=166783

متغيرات البيئة الثلاثة التي يجب أن تحصل عليها من Python المثبتات الخاصة بك وإضافتها إلى التثبيت الآخر الخاص بك من Python هي: (باستخدام Python 2.6 و OO 3.1.2)

  • Os.Environ ['ure_bootstrap'] = 'vnd.sun.star.pathname: c: program files openOffice.org 3 program starial.ini'
  • Os.Environ ['uno_path'] = 'c: program files openOffice.org 3 program '
  • OS.Environ ['path']. إلحاق ('C: Program Files OpenOffice.org 3 ure bin ؛ c: program files openoffice.org 3 base program ؛')

عنصر Pythonpath الذي يجب عليك إضافته إلى تثبيت Python الآخر الخاص بك هو موقع وحدة UNO:

  • sys.path.append ('C: Program Files OpenOffice.org 3 program program)

الآن يمكنك ببساطة "استيراد UNO".

Pyuno متوافق فقط مع إصدار مماثل من Python. منذ OO 3.1 حزم Python 2.6.1 ، أن pyuno متوافق فقط مع Python 2.6 آخر. إن محاولة استيراد UNO إلى إصدار مختلف من Python ستؤدي إلى خطأ في وقت التشغيل. ولكن هناك طريقة للتغلب على ذلك في البديل 2.

البديل 2: بالنسبة لتثبيتات Python الأخرى على أنظمة Win32 ، يمكنك تجاهل جسر Python-uno بالكامل واستخدام جسر Python-Com بدلاً من ذلك. يجب عليك تثبيت وحدة واحدة جديدة ، وأن API لديها بعض الاختلافات ، ولكن يمكنك استخدام أي إصدار من Python ، بما في ذلك Python3.

نصائح أخرى

أنا أيضا بحاجة إلى إجابة على هذا. أنا أستخدم Windows XP ولدي نظام حيث أقوم باستخراج البيانات من SQL Server DB وأدخله في ملفات Excel القالب. لا أريد إضافة ماكرو وما إلى ذلك إلى OpenOffice. لكني أريد استخدام الخدمة لإنتاج هذه الملفات.

ومع ذلك ، فإن الطريقة الوحيدة التي يبدو أنني قادرة على استيراد Modude UNO هي استخدام python.exe من دليل OpenOffice. حتى ذلك الحين ، لا يمكنني ربط هذا exec بملفات PY في نظامي لسبب ما ، وبالتالي يجب أن أضع أسماء مسارات كاملة في كل مرة.

أعلم أنه في Linux ، وحدة Pyuno هي ملحق ويمكن استخدامه في Python العادي ، ولكن في Windows لا يبدو أن هذا هو الحال. لقد أدرجت جميع تفاصيل المسار ذات الصلة من Python exec تحت OpenOffice وتكرارها في Python 2.7 ، لكن Pyuno لا يزال يفشل مع عدم القدرة على العثور على DDL دون أي إشارة إلى ما DDL.

أعتقد أن الجواب هو "هذا غير ممكن". من القراءة الأخرى على الويب ، يبدو أن stdlib المستخدمة لتجميع/ربط python القابل للتنفيذ من python.org يختلف عن stdlib المستخدمة لتجميع/ربط python.exe الموزعة مع openoffice.org. لا أعرف لماذا ، وما زلت مرتبكًا من حقيقة أن كلا من الثعبان تعطيني نفس رسائل بدء التشغيل. لذلك يمكن أن أكون تماما على المسار الخطأ هنا.

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