2

Python と sqlite の間のインターフェイスが必要です。どちらもマシンにインストールされています。古いバージョンの Python (2.4.3) を使用していました。そのため、pysqlite はデフォルトでは含まれていませんでした。まず、pysqlite をインストールしてこの問題を解決しようとしましたが、この方向では成功しませんでした。この問題を解決するための 2 回目の試みは、新しいバージョンの Python をインストールすることでした。マシンのルート権限がありません。というわけで、ローカルにインストールしました。Python の新しいバージョンは (2.6.2) です。私の知る限り、このバージョンにはデフォルトで pysqlite が含まれているはずです (以前のように「pysqlite2」ではなく「sqlite3」と呼ばれるようになりました)。

ただし、次のように入力すると:

from sqlite3 import *

私は得る:

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

上記のエラー メッセージは、「from blablabla import *」と入力した場合に表示されるものとは異なることに注意してください。

トレースバック (最新の呼び出しが最後):
ファイル ""、1 行目、ImportError 内: blablabla という名前のモジュールはありません

そのため、python は pysqlite に関連するものを見ますが、まだいくつかの問題があります。その問題で誰か助けてくれませんか?

PS CentOS リリース 5.3 (Final) を使用しています。

4

2 に答える 2

1

「slite3.py」があります(実際にはパッケージに相当するため、sqlite3/__init__.pyそれimport sqlite3自体は問題ありませんが、そのモジュールは順番に試行しimport _sqlite3て失敗するため、見つかりません。ローカルの Python ルートの下_sqlite3.soにある必要があります。AND ldpython2.6/lib-dynloadそのディレクトリからも動的ライブラリをロードする権限を持つように指示する必要があります (通常、.bashrc などで適切な環境変数を設定することによって)。その lib-dynload ディレクトリはありますか? そのディレクトリには何がありますか? どの環境変数がありますか?文字列 LD (大文字) を含む、つまりenv|grep LDシェル プロンプトで?

于 2009-09-25T17:45:47.533 に答える
1

Windowsでは_sqlite3.pydC:\Python26\DLLs. _ *nixでは、 のようなパスの下にある必要があります/usr/lib/python2.6/lib-dynload/_sqlite3.so。その共有ライブラリがないか、PYTHONPATH正しく設定されていない可能性があります。

スーパーユーザーとしてインストールしなかったと言ったので、おそらく不正なパスです。次のようにして、手動でPythonにパスを検索_sqlite3.soさせることができます

import sys
sys.path.append("/path/to/my/libs")

しかし、推奨されるアプローチは、おそらくPYTHONPATHあなた.bashrcまたは他のログインファイルを変更することです.

于 2009-09-25T17:20:04.527 に答える