既存のPythonインストールでPyunoを使用します
-
28-09-2019 - |
質問
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の任意のバージョンを使用できます。
- pywin32moduleをインストールして、comアクセスを取得します。 http://sourceforge.net/projects/pywin32/
- APIの違いに関する議論: http://user.services.openoffice.org/en/forum/viewtopic.php?f=45&t=36608&p=168179
他のヒント
これに対する答えも必要です。 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が同じスタートアップメッセージを提供してくれるという事実にまだ混乱しています。だから私はここで完全に間違った軌道に乗ることができました。