2009-09-25 21 views
3

我已經安裝了Python 2.6.2 ..我做了「本地」,因爲我沒有root權限。有了這個版本的Python,我想使用名爲「sqlite3」的模塊(它在早期版本中被稱爲「pysqlite」)。從理論上講,我必須能夠毫無問題地使用這個模塊,因爲它應該被默認包含在所考慮的Python版本中。但是,我有一些麻煩。當我鍵入:如何獲取_sqlite3.so文件?

from sqlite3 import * 

我得到:

Traceback (most recent call last): 
    File "", line 1, in File "/home/verrtex/opt/lib/python2.6/sqlite3/init.py", line 24, in 
    from dbapi2 import * 
    File "/home/verrtex/opt/lib/python2.6/sqlite3/dbapi2.py", line 27, in 
    from _sqlite3 import * 
ImportError: No module named _sqlite3 

正如我已經告訴,這個問題的可能的原因是,在嘗試將模塊導入_sqlite3和失敗,所以它是沒有找到_sqlite3.so。這個解釋是由我的「/home/verrtex/opt/lib/python2.6/lib-dynload」目錄中沒有_sqlite3.so文件這一事實所支持的。所以,這是我必須解決的問題(我必須將此文件放到此目錄中)。

我發現要解決這個問題,我必須「安裝sqlite3並重新編譯Python」。我還發現問題可以通過「從源代碼構建並將庫移動到/usr/lib/python2.5/lib-dynload/」來解決。

但是,我不清楚我到底該做什麼。我應該安裝名爲「sqlite3」的python模塊,還是我應該安裝sqlite-database?順便說一下,我已經由管理員全局安裝了sqlite-database。我可以使用它,還是需要安裝我自己的數據庫?順便說一下,我沒有root權限。它可能是一個問題嗎?或者我需要安裝一個python模塊?在這種情況下,缺少root權限是一個問題嗎?

我也被告知,從SQLite的下載頁面需要的源文件,解壓壓縮文件,移動到擴展目錄,然後執行:

./configure 
make 
make install 

然後我不得不重新編譯後的文件複製到我的Python目錄。我應該複製所有新編譯的文件嗎?我應該複製到哪個目錄(我的Python目錄有一些子目錄)?

非常感謝任何幫助,因爲我與這個問題疊加在一起。

P.S.我的操作系統是CentOS版本5.3(最終版)。

+0

你是如何安裝Python的?因爲sqlite3應該在那裏 – Mark 2009-09-26 11:25:05

+0

我按照sledge建議的方式安裝Python: http://stackoverflow.com/questions/1455642/how-to-build-sqlite-for-python-2-4 – Verrtex 2009-09-26 13:02:27

+0

我有sqlite3.py但我沒有_sqlite3.so。有關更多詳細信息,請參閱Alex Martelli在這裏的答案: http://stackoverflow.com/questions/1478479/why-my-python-does-not-see-pysqlite – Verrtex 2009-09-26 13:05:10

回答

1

您的sys.path很可能不會指向您本地安裝的副本,或者您未運行您認爲自己的Python 2.6.2。

如果沒有這種情況,你需要SQLite開發頭文件(sqlite-dev或其他),然後重新編譯Python。在編譯結束時需要注意,因爲它抱怨由於缺少依賴關係而沒有構建它。

編輯:重讀的問題。

編輯2:另外,不要這樣做:

from module import * 

這樣做:

from module import what_i_need 
import module2 
+0

我相信,我正在運行Python 2.6.2(I用「python -V」檢查它)。我認爲「_sqlite3.so」是一個問題,因爲它不在「/ lib-dynload /」中。 – Verrtex 2009-09-26 00:11:57

0

儘管您可能已經發現你的解決方案,我只是寫雷倒的人誰陷入了同樣的問題。

我的操作系統是CentOS 6。3(Final)用python2.6

我在我的系統中安裝python2.7.3,但問題仍然存在。 (_sqlite3.so應在/path/to/python2.7.3/lib/python2.7/lib-dynload python2.7.3安裝後,由於安裝python2.7之前,sqlite-autoconf-3071502.tar.gz安裝。)

我那麼/path/to/python2.6/lib/python2.6/lib-dynload/_sqlite3.so複製到python2.7的路徑。和類型在Python殼:

>>> import sqlite3

>>> import _sqlite3

沒有錯誤報告。

不幸的是,當我運行我的python腳本時,該死的錯誤出現了。 我安裝了sqlite-devel(sudo yum install sqlite-devel或下載here),然後重新安裝python2.7.3。再次運行我的python腳本。謝天謝地!該死的錯誤終於解決了。