web-dev-qa-db-ja.com

Python3でsqlite3をインポートできません

Pythonバージョン3.5.0でsqlite3モジュールをインポートできません。これが私が得るものです:

>>> import sqlite3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/usr/local/lib/python3.5/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: No module named '_sqlite3'

ウェブ全体にStackOverflowの投稿やサポートフォーラムがたくさんあり、人々がこの問題について不満を言っていることは知っていますが、これまでのところ、投稿された解決策はどれもうまくいきませんでした。これが私が行ったことのある場所です:

  1. また、CentOS 6.8x86_64を実行しているこのサーバーにPython 2.6.6がインストールされています。Python REPLそしてPython 2.6.6を使用する場合はsqlite3を問題なくインポートします。bashから直接sqlite3を使用することもできますが、問題はないようです。

  2. この役立つ質問 有望に見えました。ユーザーjammyWolfが提案したように、--enable-loadable-sqlite-extensionsオプションを使用してPython3.5を再構成および再コンパイルしようとしました。いいえ、同じエラーが引き続き発生します。

  3. 私はいい子のように仮想環境を使用してきましたが、このサーバーへのルートアクセス権があります。だから、私は悪い子で、virtualenvsをアクティブにせずにrootとしてpython3を実行しました。まだ運がない。ですから、パーミッションとは何の関係もないと思います。

  4. エラーメッセージにNo module named '_sqlite3'と表示されていることに気づきました。 このスレッド は、モジュール名の前の下線が、モジュールが実装の詳細であり、APIで公開されていないことを意味することを示しています。 ...この情報をどうすればよいかわかりませんが、どこかにヒントがあるかもしれません。

何か案は?

8
fterdal

Falsetruは正しいので、なじみのない人のためにもう少し詳しく説明します(Linuxの説明)。このエラーが発生する場合は、正しいヘッダーなしでコンパイルされたバージョンのpythonを使用している可能性があります。これは、ソートするためのステップバイステップガイドです。(Python3.XXの手順)

  1. 必要なsqliteライブラリをインストールします
   Sudo apt-get install libsqlite3-dev 
  1. アンインストールpython(このガイドの例としてpython 3.6.5を使用しています)
   Sudo apt-get remove python3.6
  1. ソースからpython
   cd /tmp && wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
  1. アーカイブを解凍します
   tar -xvf Python-3.6.5.tgz
  1. 構成、設定
   cd Python-3.6.5 && ./configure
  1. 作ってインストールします(そしてあなたがそれにいる間にコーヒーを作りに行きます)
   make && Sudo make install

「python3.6-V」を正しく実行すると、pythonバージョンが得られます。仮想環境も再構築する必要があることに注意してください。

あなたが遭遇するかもしれない1つの最後の警告。

zipimport.ZipImportError: can't decompress data; zlib not available

これは、次のzlibライブラリがインストールされていない場合に発生します。

Sudo apt-get install zlib1g-dev
2
Lance

インストール sqlite-devel ヘッダー、ビルドに必要なライブラリを含むパッケージsqlite3拡張子。

yum install sqlite-devel

[〜#〜] note [〜#〜]:Pythonにはsqlite3ライブラリ自体ですが、拡張モジュール(ラッパー)です。

1
falsetru