簡體   English   中英

如何導入站點包中安裝的模塊

[英]How to import a module installed in site-packages

我已對此進行更新,以更改如何從.so文件導入的問題,該文件已經有一個名為.py的前端。

在CentOS 6.6上,我安裝了Python 2.6.6,並且我正在嘗試安裝InformixDB-2.5。

python setup.py build_ext命令返回一些警告,但是gcc步驟完成而沒有錯誤。

以root python setup.py install完成python setup.py install命令,沒有錯誤。

我的問題是當我運行Python並輸入import informixdb ,出現模塊未找到錯誤

我已經閱讀了這篇文章 ,並且在站點包中已經有一個_informixdb.so_informixdb.so 如果我從該目錄調用Python並import informixdb ,則不會出錯。 我只是不確定要設置哪個環境變量來進行選擇,或者不確定是否應該對此進行符號鏈接,但是不知道該如何符號鏈接。

這是python setup.py install的輸出

running install
running build
running build_py
running build_ext
running install_lib
running install_egg_info
Removing /usr/lib/python2.6/site-packages/InformixDB-2.5-py2.6.egg-info
Writing /usr/lib/python2.6/site-packages/InformixDB-2.5-py2.6.egg-info

這是錯誤

[dbadmin@bucky InformixDB-2.5]$ python informixdb.py
Traceback (most recent call last):
  File "informixdb.py", line 146, in <module>
    from _informixdb import *
ImportError: No module named _informixdb

首先,為了隔離問題,請不要從構建或安裝InformixDB的目錄中調用python或腳本。 而是從您的應用程序所在的任何地方調用它。 從那里看,如果嘗試“ import notifyixdb”,會發生什么。 如果python抱怨找不到“ informixdb”(名稱中沒有下划線),則說明您的Python路徑被弄亂了,您需要修復Python路徑以包含InformixDB的安裝位置。

如果python抱怨它無法導入“ _informixdb”(帶有下划線),請驗證_informixdb.so與notifyixdb.py處於同一位置,並且該文件的權限正確。 如果是這樣,則問題很可能是動態鏈接程序找不到Informix客戶端運行時庫。

要檢查后者是否有問題,請運行命令“ ldd /path/to/_informixdb.so”,然后查看輸出。 它看起來應該像這樣:

carsten@haese:~$ ldd /usr/local/lib/python2.7/dist-packages/_informixdb.so
    linux-gate.so.1 =>  (0x00f47000)
    libifsql.so => /opt/informix/lib/esql/libifsql.so (0x001d9000)
    libifasf.so => /opt/informix/lib/libifasf.so (0x00999000)
    libifgen.so => /opt/informix/lib/esql/libifgen.so (0x00110000)
    libifos.so => /opt/informix/lib/esql/libifos.so (0x0039f000)
    libifgls.so => /opt/informix/lib/esql/libifgls.so (0x0061d000)
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x006c5000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00be8000)
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00342000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x001b1000)
    libcrypt.so.1 => /lib/i386-linux-gnu/libcrypt.so.1 (0x00220000)
    /lib/ld-linux.so.2 (0x0016a000)

如果ldd命令指示未找到任何libifXXX庫,那么這就是您的問題,您需要告知動態鏈接器Informix庫的位置,例如,通過適當地設置LD_LIBRARY_PATH環境變量或將其添加到etc / ld.so.conf.d以某種方式運行ldconfig。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM