簡體   English   中英

無法在 Python3 中導入 sqlite3

[英]Cannot import sqlite3 in Python3

我無法在 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.8 x86_64 的服務器上安裝了 Python 2.6.6。 在使用 Python 2.6.6 時,我可以打開 Python REPL 並導入 sqlite3 就好了。 我也可以直接從 bash 中使用 sqlite3 並且沒有任何問題。

  2. 這個有用的問題看起來很有希望。 正如用戶 jammyWolf 建議的那樣,我嘗試使用--enable-loadable-sqlite-extensions選項重新配置和重新編譯 Python3.5。 不,同樣的錯誤仍然發生。

  3. 我一直在使用虛擬環境,就像一個好孩子,但我有這台服務器的 root 訪問權限。 所以,我是一個壞男孩,在沒有激活任何虛擬環境的情況下以 root 身份運行 python3。 仍然沒有運氣。 所以我認為這與權限無關。

  4. 我注意到在錯誤消息中,它說No module named '_sqlite3' 該線程建議模塊名稱前的下划線表示該模塊是一個實現細節,未在 API 中公開。 ...我不確定如何處理這些信息,但其中可能有提示。

有什么想法嗎?

Falsetru 是正確的,對於那些不熟悉的人(linux 說明),我將更詳細地介紹。 如果您收到此錯誤,很可能您使用的是在沒有正確頭文件的情況下編譯的 python 版本。 這是對其進行排序的分步指南。 (Python 3.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版本。 請注意,您還必須重建您擁有的任何虛擬環境。

您可能會遇到的最后一個警告。

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

如果您沒有安裝以下 zlib 庫,則會發生這種情況:

sudo apt-get install zlib1g-dev

安裝sqlite-devel包,其中包括構建sqlite3擴展所需的頭文件和庫。

yum install sqlite-devel

注意:Python 不包括sqlite3庫本身,而是一個擴展模塊(包裝器)。

我將 sqlite3.dll 復制到此文件夾中:

C:\Users\*****\Anaconda3\DLLs

經過兩周的嘗試,它奏效了。

暫無
暫無

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

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