質問

Djangoサーバー内からさまざまなドキュメント形式(doc、wordperfect、htmlなど)をPDFに変換する方法としてPyunoを使用しようとしています。私は時間を過ごしています import uno 働くために。やっているときは失敗しているようです import pyuno, 、のメッセージがあります ImportError: DLL Load Failed: The specified module could not be found.

これを機能させる唯一の方法は、OpenOfficeに付属しているPython 2.6を使用することですが、他の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/

「Import UNO」は、PythonインタープリターがOpenOfficeにバンドルされた場合、またはパッケージャーがすでに多くの作業を行っているLinuxシステムで自動的に機能します。

代替1: :Win32システムに他のPythonインストールの場合、3つの環境変数をインポートし、PythonPathに1つのアイテムを追加する必要があります。詳細なチュートリアルは次のとおりです http://user.services.openoffice.org/en/forum/viewtopic.php?f=45&t=36370&p=166783

OO-Installed-Pythonから取得する必要がある3つの環境変数は、Pythonの他のインストールに追加する必要があります。(Python 2.6およびOO 3.1.2を使用)

  • os.environ ['ure_bootstrap'] = 'vnd.sun.star.pathname:c: program files openoffice.org 3 program busindal.ini' '
  • os.environ ['uno_path'] = 'c: program files openoffice.org 3 program '
  • os.environ ['path']。append( '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 base program')

これで、単に「unoをインポートする」ことができます。

Pyunoは、同様のバージョンのPythonとのみ互換性があります。 OO 3.1はPython 2.6.1バンドルであるため、Pyunoは別のPython 2.6とのみ互換性があります。 UNOを別のバージョンのPythonにインポートしようとすると、ランタイムエラーが発生します。しかし、代替2にはそれを回避する方法があります。

代替2: :Win32 Systemsに他のPythonインストールの場合、Python-Uno Bridgeを完全に無視し、代わりにPython-Com Bridgeを使用できます。 1つの新しいモジュールをインストールする必要があり、APIにはいくつかの違いがありますが、Python3を含むPythonの任意のバージョンを使用できます。

他のヒント

これに対する答えも必要です。 Windows XPを使用しており、SQL Server DBからデータを抽出し、テンプレートExcelファイルに挿入するシステムを用意しています。 OpenOfficeにマクロなどを追加したくありません。しかし、私はこれらのファイルを作成するためにサービスを使用したいと思います。

ただし、UNO Modudeをインポートできるように見える唯一の方法は、OpenOfficeディレクトリからPython.exeを使用することです。それでも、何らかの理由でこのexecをシステム内のPyファイルに関連付けることはできません。そのため、毎回フルパス名を付けなければなりません。

Linuxでは、Pyunoモジュールはアドオンであり、通常のPythonで使用できることを知っていますが、Windowsではこれは当てはまらないようです。 Python Execのすべての関連パスの詳細をOpenOfficeの下にリストし、Python 2.7でそれらを複製しましたが、PyunoはDDLを参照せずにDDLを見つけることができないため失敗します。

答えは「これは不可能だ」だと思います。 Web上の他の読み物から、python.orgからpython実行可能ファイルをコンパイル/リンクするために使用されるstdlibは、openoffice.orgに分布したpython.exeをコンパイル/リンクするために使用されるstdlibとは異なるようです。理由はわかりませんが、両方のPythonsが同じスタートアップメッセージを提供してくれるという事実にまだ混乱しています。だから私はここで完全に間違った軌道に乗ることができました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top