2010-11-24 56 views
3

我試圖使用PyUNO作爲一種方法將不同的文檔格式(doc,wordperfect,html等)從我的Django服務器轉換爲PDF。我有一段時間讓import uno工作。在執行import pyuno時似乎失敗,並顯示消息ImportError: DLL Load Failed: The specified module could not be found在我現有的python安裝中使用pyuno

我可以得到這個工作的唯一方法是使用OpenOffice附帶的Python 2.6,但我真的想使用我的其他2.6安裝。 PyUNO的文檔都是針對Python 2.2的,並且被認爲是過時的。

我猜以下文件的部分(或全部)需要從OpenOffice的目錄到我的站點包目錄複製(或它們的一些子目錄):

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

有沒有人有任何成功實現這一目標?

這是在Windows上。

+0

http://sourceforge.net/projects/pywin32/

  • 探討API差異4818,使用PyUNO庫需要使用OOo附帶的Python,因爲它們與不同的stdlib鏈接。 :( – 2010-11-30 13:40:36

  • 回答

    2

    對於簡單的轉換,您無需重新發明輪子。看看unoconv:http://dag.wieers.com/home-made/unoconv/

    如果python解釋器與OpenOffice捆綁在一起,或者在一些Linux系統中,包裝工已經爲你做了很多工作,那麼'Import uno'將自動工作。

    替代方案1:對於Win32系統上的其他Python安裝,您需要導入三個環境變量並將一個項添加到您的Python路徑中。詳細教程是在http://user.services.openoffice.org/en/forum/viewtopic.php?f=45&t=36370&p=166783

    三個環境變量必須從你的OO安裝的Python,並添加到您的其他安裝Python是: (使用Python 2.6和3.1.2 OO)

    • os.environ ['URE_BOOTSTRAP'] ='vnd.sun.star.pathname:c:\ Program Files \ OpenOffice.org 3 \ programme \ basic.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 \基礎\程序;')

    的PYTHONPATH你必須添加到您的其他安裝Python的項目是UNO模塊的位置:

    • sys.path.append( 'C:\ Program Files文件\ OpenOffice.org 3 \基礎\程序')

    現在你可以簡單地'導入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。

    0

    我也需要一個答案。我正在使用Windows XP,並有一個系統,我從SQL服務器數據庫提取數據並將其插入到模板excel文件中。我不想將宏等添加到OpenOffice。但我想使用該服務來生成這些文件。

    但是,我似乎能夠導入uno模塊的唯一方法是使用openoffice目錄中的python.exe。即使那樣我也無法將這個exec與我的系統中的py文件關聯起來,因此我必須每次都輸入完整的路徑名。

    我知道,在Linux中,Pyuno模塊是一個插件,可以在普通的python中使用,但在windows中似乎不是這種情況。我已經列出了openoffice下python exec的所有相關路徑細節,並將它們複製到python 2.7中,但是pyuno仍然無法找到DDL而沒有提及DDL。

    +0

    你可以通過xlwt創建你的Excel文件(完全不同的方式)? – 2010-11-29 19:27:12

    0

    我認爲答案是「這是不可能的」。從網上的其他閱讀中,似乎用於編譯/鏈接python.org中的python可執行文件的stdlib與用於編譯/鏈接隨OpenOffice.org分發的python.exe的stdlib不同。我不知道爲什麼,我仍然對兩個蟒蛇給我的啓動信息感到困惑。所以我可能在這裏完全走錯了路。