ฉันจะเพิ่มโมดูล sqlite3 ใน Python ได้อย่างไร


109

ใครช่วยบอกวิธีติดตั้งโมดูล sqlite3 ควบคู่กับ Python เวอร์ชันล่าสุดได้ไหม ฉันใช้ Macbook และในบรรทัดคำสั่งฉันลอง:

pip install sqlite

แต่มีข้อผิดพลาดปรากฏขึ้น


3
หาก python ของคุณสร้างจากซอร์สด้วยตนเองและพบกับข้อผิดพลาดนี้คุณควรติดตั้งแพ็คเกจ sqlite-devel ก่อนจากนั้นสร้าง python ใหม่ตามที่ @falsetru กล่าวชื่อแพ็กเกจจะแตกต่างกันไปขึ้นอยู่กับระบบปฏิบัติการ
ngn999

เคยพยายามสร้าง python จากซอร์สและพบข้อผิดพลาดนี้: คำตอบที่ดีจริงๆตอบสนองกระบวนการ bulild และการพึ่งพาที่คุณต้องการ stackoverflow.com/a/6171511/6273503
Harper

คำตอบ:


189

คุณไม่จำเป็นต้องติดตั้งsqlite3โมดูล มันรวมอยู่ในไลบรารีมาตรฐาน (ตั้งแต่ Python 2.5)


4
จริงๆแล้วฉันมี python 2.5.4 ที่ไม่รวม sqlite3 :(
shevy

@ user722915 ตามมีอะไรใหม่ใน Python 2.5โมดูล pysqlite ( pysqlite.org ) ซึ่งเป็น wrapper สำหรับฐานข้อมูลแบบฝัง SQLite ได้ถูกเพิ่มลงในไลบรารีมาตรฐานภายใต้ชื่อแพ็กเกจ sqlite3
falsetru

10
หาก python3 ของคุณสร้างจากซอร์สด้วยตนเองและตรงตามข้อผิดพลาดนี้คุณควรติดตั้งแพ็คเกจ sqlite-devel ก่อนจากนั้นสร้าง python3 ใหม่
ngn999

@ ngn999 คุณควรแสดงความคิดเห็นในคำถามเพื่อแจ้งให้ OP ทราบ เนื่องจากคำตอบนี้เป็นเวลานานมากและจะไม่มีการแจ้งให้ OP ทราบหากคุณแสดงความคิดเห็นในคำตอบ
falsetru

3
@ ngn999, BTW ชื่อแพ็กเกจจะแตกต่างกันไปขึ้นอยู่กับระบบปฏิบัติการ ตัวอย่างเช่นใน Ubuntu เป็นlibsqlite3-devไฟล์.
falsetru



15

โดยปกติจะรวมอยู่ด้วย อย่างไรก็ตามตามที่ @ ngn999 กล่าวไว้หาก python ของคุณถูกสร้างขึ้นจากแหล่งที่มาด้วยตนเองคุณจะต้องเพิ่มเข้าไป

นี่คือตัวอย่างของสคริปต์ที่ติดตั้งจะเป็นนักการรุ่นที่ห่อหุ้ม (สภาพแวดล้อมเสมือนจริง) ของ Python3ในไดเรกทอรีผู้ใช้ของคุณกับรุ่นที่ห่อหุ้มของ sqlite3

INSTALL_BASE_PATH="$HOME/local"
cd ~
mkdir build
cd build
[ -f Python-3.6.2.tgz ] || wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
tar -zxvf Python-3.6.2.tgz

[ -f sqlite-autoconf-3240000.tar.gz ] || wget https://www.sqlite.org/2018/sqlite-autoconf-3240000.tar.gz
tar -zxvf sqlite-autoconf-3240000.tar.gz

cd sqlite-autoconf-3240000
./configure --prefix=${INSTALL_BASE_PATH}
make
make install

cd ../Python-3.6.2
LD_RUN_PATH=${INSTALL_BASE_PATH}/lib configure
LDFLAGS="-L ${INSTALL_BASE_PATH}/lib"
CPPFLAGS="-I ${INSTALL_BASE_PATH}/include"
LD_RUN_PATH=${INSTALL_BASE_PATH}/lib make
./configure --prefix=${INSTALL_BASE_PATH}
make
make install

cd ~
LINE_TO_ADD="export PATH=${INSTALL_BASE_PATH}/bin:\$PATH"
if grep -q -v "${LINE_TO_ADD}" $HOME/.bash_profile; then echo "${LINE_TO_ADD}" >> $HOME/.bash_profile; fi
source $HOME/.bash_profile

ทำไมทำแบบนี้ คุณอาจต้องการสภาพแวดล้อม python แบบโมดูลาร์ที่คุณสามารถทำลายและสร้างใหม่ได้อย่างสมบูรณ์โดยไม่ส่งผลกระทบต่อระบบปฏิบัติการของคุณสำหรับสภาพแวดล้อมการพัฒนาที่เป็นอิสระ ในกรณีนี้วิธีแก้ปัญหาคือการติดตั้ง sqlite3 แบบแยกส่วนด้วย


1
อาจเกิดขึ้นได้หากคุณใช้ pyenv เพื่อจัดการเวอร์ชัน Python ของคุณ แต่คุณไม่ได้ติดตั้งแพ็คเกจระบบทั้งหมดเมื่อติดตั้งตัวแปล Python
MarkNS
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.