ข้อผิดพลาดในการติดตั้ง python-dev: ImportError: ไม่มีโมดูลชื่อ apt_pkg


95

ฉันเป็นผู้ใช้ Debian และฉันต้องการติดตั้ง python-dev แต่เมื่อฉันรันโค้ดในเชลล์เป็นรูท:

# aptitude install python-dev

ฉันได้รับข้อผิดพลาดต่อไปนี้:

Traceback (most recent call last):       
  File "/usr/bin/apt-listchanges", line 28, in <module>
    import apt_pkg
ImportError: No module named apt_pkg

สิ่งที่น่าจะเป็นปัญหาและฉันจะแก้ไขได้อย่างไร


1
ดูเหมือน apt-get ของคุณจะพังจะเกิดอะไรขึ้นเมื่อคุณลอง apt-get install python-dev
Pierre Geier

เมื่อฉันลองใช้ apt-get install python-dev มันบอกว่าติดตั้งแล้ว: กำลังอ่านรายการแพ็คเกจ ... เสร็จสิ้นการสร้างแผนผังการพึ่งพาการอ่านข้อมูลสถานะ ... เสร็จสิ้น python-dev เป็นเวอร์ชันใหม่ล่าสุดแล้ว 0 อัปเกรด, 0 ติดตั้งใหม่, 0 เพื่อลบและ 0 ไม่อัปเกรด ข้อเสนอแนะอื่น ๆ ?
Belphegor

คำตอบ:


63

ตรวจสอบให้แน่ใจว่าคุณมีแพ็คเกจ python-apt ที่ใช้งานได้ คุณสามารถลองลบและติดตั้งแพ็กเกจนั้นอีกครั้งเพื่อแก้ไขปัญหา apt_pkg.so ไม่อยู่

apt-get install python-apt

มีการติดตั้งแล้ว เมื่อฉันกด: # apt-get install python-apt มันทำให้ฉันอ่านรายการแพ็คเกจ ... เสร็จสิ้นการสร้างแผนผังการพึ่งพาการอ่านข้อมูลสถานะ ... เสร็จสิ้น python-apt เป็นเวอร์ชันใหม่ล่าสุดแล้ว 0 อัปเกรด, 0 ติดตั้งใหม่, 0 เพื่อลบและ 0 ไม่อัปเกรด และเมื่อฉันลองอีกครั้งด้วย: # aptitude ติดตั้ง python-dev มันทำให้ฉันมีข้อผิดพลาดเดียวกันอีกครั้ง ความคิดอื่น ๆ ฉันควรทำอย่างไร
Belphegor

14
ลบโดยใช้apt-get remove --purge python-aptและติดตั้งอีกครั้ง
Arnestig

8
ระวังการพึ่งพาอื่น ๆ ฉันลบแพ็คเกจ (เกินไป) อย่างรวดเร็วใน Ubuntu และการอ้างอิงอื่น ๆ ก็ถูกลบออกเช่นกัน (เช่น ubuntu-desktop) เป็นความผิดของฉันที่ไม่ใส่ใจกับโน้ตในบันทึก
Al R.

1
ไม่แน่ใจจริงๆว่าเป็นเพราะ python-apt ดูที่package.ubuntu.com/lucid/ubuntu-desktopสำหรับการอ้างอิงกับ ubuntu-desktop
Arnestig

2
@Arnestig REMOVING python-aptฟังดูค่อนข้างอันตราย !! เรียนรู้บทเรียนของฉันครั้งเดียวและฉันจะไม่ลอง
อัลวาส

140

ฉันพบปัญหานี้เมื่อทำsudo apt-get update. env ของฉันคือ debian8 โดยมี python2.7 + 3.4 (ค่าเริ่มต้น) + 3.5

โค้ดต่อไปนี้จะสร้างapt_pkg....soไฟล์สำหรับ python 3.5 ขึ้นมาใหม่เท่านั้น

sudo apt-get install python3-apt --reinstall

รหัสต่อไปนี้ช่วยแก้ปัญหาของฉันได้

cd /usr/lib/python3/dist-packages
sudo ln -s apt_pkg.cpython-{35m,34m}-x86_64-linux-gnu.so

เห็นได้ชัดว่า python3-apt ตรวจสอบเวอร์ชัน python สูงสุดแทนที่จะเป็นเวอร์ชัน python ที่ใช้อยู่ในปัจจุบัน


27
sudo ln -s apt_pkg.cpython-{35m,34m}-x86_64-linux-gnu.soควรเปลี่ยนเป็น sudo ln -s apt_pkg.cpython-{35m,34m}-x86_64-linux-gnu.so apt_pkg.so
desaiankitb

38
คุณช่างน่าอัศจรรย์! สำหรับฉันมันเป็นsudo ln -s apt_pkg.cpython-{35m,36m}-x86_64-linux-gnu.sopython3.6 และตอนนี้ข้อผิดพลาดที่น่ากลัวนี้หายไปแล้ว
Alex Gurrola

54
หลังจากติดตั้ง Python 3.7 ถัดจากเริ่มต้น 3.6 ใน Ubuntu 18.04 กับsudo apt install python3.7ผมได้รับข้อผิดพลาด apt_pkg นี้พยายามที่จะใช้ pip ดังนั้นฉันจำเป็นในการทำงานcd /usr/lib/python3/dist-packagesนั้นแล้วsudo ln -s apt_pkg.cpython-{36m,37m}-x86_64-linux-gnu.so sudo apt install python3-pip
abulka

3
สำหรับ python 3.6 คำสั่งจะเป็นsudo ln -s apt_pkg.cpython-{35m,36m}-x86_64-linux-gnu.so
StatguyUser

1
วงเล็บเหล่านั้นไม่ใช่คุณสมบัติของคำสั่ง ln พวกเขาเรียกใช้การขยายเชลล์รั้งดูgnu.org/software/bash/manual/html_node/Brace-Expansion.html
Carlos

113

แก้โดยสิ่งนี้:

/usr/lib/python3/dist-packages# cp apt_pkg.cpython-34m-i386-linux-gnu.so apt_pkg.so

หรือ:

/usr/lib/python3/dist-packages# cp apt_pkg.cpython-35m-x86_64-linux-gnu.so apt_pkg.so

โดยทั่วไปถ้าคุณได้รับNo such file or directoryเพียงlsเพื่อพยายามที่จะได้รับชื่อที่ถูกต้อง


ทำงานได้อย่างสมบูรณ์
Subhrajyoti Sen

3
บน Ubuntu 18.04 ให้ใช้ $ cd / usr / lib / python3 / dist-แพ็คเกจ $ sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so
Naren Yellavula

สิ่งนี้ใช้ได้ผลสำหรับฉันเช่นกัน ... ฉันแสดงรายการไฟล์ทั้งหมดในไฟล์/usr/lib/python3/dist-packagesและฉันเห็นว่าฉันไม่มีapt_pkg.cpython-34m-i386-linux-gnu.soหรือapt_pkg.cpython-3m-i386-linux-gnu.soแต่ฉันมีapt_pkg.cpython-36m-i386-linux-gnu.so... ฉันคัดลอกไฟล์นี้ไปapt_pkg.soและทำงานได้อย่างสมบูรณ์! ขอบคุณ!
Leonardo Isso

สิ่งนี้ได้ผลสำหรับฉันเช่นกัน เนื่องจาก @LeonardoIsso ฉันได้แสดงรายการไฟล์ทั้งหมดเพื่อค้นหาชื่อไฟล์ที่เหมาะสมเพราะฉันใช้ Linux 32 บิต
w3Develops

59

สิ่งนี้เกิดขึ้นกับฉันบน Ubuntu 18.04.2 หลังจากที่ฉันพยายามติดตั้ง Python3.7 จาก repo deadsnakes

ทางออกคือสิ่งนี้

1) cd /usr/lib/python3/dist-packages/

2) sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so


3
แค่อยากจะยืนยันให้คนอื่นรู้ว่าสิ่งนี้ใช้ได้ผลกับฉันจริงๆ
AnthonyD973

2
มันบ้ามากขอบคุณ! เมื่ออยู่ในท่าเทียบเรือ:RUN ln -s /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.so
loretoparisi

2
ใช่นั่นคือทางออก :)
szedjani

1
นี่คือทางออก! หลังจากอัปเกรดเป็น python 3.7
JOHN

1
18.04.04 อัปเกรดเป็น python 3.7 และสิ่งนี้ก็ใช้ได้ผลเช่นกัน! ขอบคุณ !!
RJaus

18

ข้อผิดพลาดนี้มักจะเกิดขึ้นเมื่อมีการติดตั้ง python เวอร์ชันใหม่ควบคู่ไปกับเวอร์ชันเก่าเช่น;

  • Ubuntu 18.04.1 มาพร้อมกับ python เวอร์ชัน 3.6.6
  • ppa ที่ติดตั้ง: deadsnakes / python3.7.1 หรือทางเลือกอื่น
  • รันคำสั่งที่ใช้โมดูล apt_pkg และได้รับข้อผิดพลาดเช่น;

        from CommandNotFound.db.db import SqliteDatabase
    File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, in <module>
        import apt_pkg
    

เมื่อเราติดตั้งเวอร์ชัน non-distro python3 ด้วย apt มันจะตั้งค่าไดเร็กทอรีโมดูลที่ใช้ร่วมกันให้เป็นของ python3 โดยส่วนใหญ่จะเป็น /usr/lib/python3ส่วนใหญ่มักจะเป็น

โดยส่วนใหญ่แล้วสิ่งนี้จะใช้ได้ แต่ในบางสถานการณ์ python เวอร์ชันต่างๆจะอาศัยไลบรารีหรือวัตถุ / ไลบรารีที่ใช้ร่วมกันที่แตกต่างจากเวอร์ชัน python อื่น ๆ ดังนั้นเนื่องจากคำตอบอื่น ๆ ได้ชี้ให้เห็นว่าเราจำเป็นต้องเชื่อมโยง. SO กับ เวอร์ชันหลามที่ถูกต้อง ดังนั้นหากเราติดตั้ง python3.6 บนระบบ 64 บิตลิงก์ apt_pkg. SO จะเป็น

sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so

แต่ปัญหาอยู่ที่ว่าเมื่อเราติดตั้ง python เวอร์ชันที่ใหม่กว่าลิงก์จะอัปเดตให้ชี้ไปที่ python เวอร์ชันใหม่ล่าสุดซึ่งนำไปสู่ข้อผิดพลาดของโมดูล apt_pkg ที่ไม่พบ เมื่อตรวจสอบว่า python รุ่นใดที่มาพร้อมกับ distro ของคุณคุณสามารถสร้างลิงค์ดังที่แสดงด้านบน หรือเราใช้วิธีเสนอคำสั่งให้เลือกเวอร์ชัน python เพื่อเชื่อมโยง. SO เช่น;

sudo ln -s apt_pkg.cpython-{36m,35m,34m}-x86_64-linux-gnu.so apt_pkg.so

เนื่องจาก python จะสร้างลิงค์นี้ไปยัง python เวอร์ชันล่าสุดที่ติดตั้งเราจึงให้คำสั่งมีตัวเลือกให้เลือกจาก python 3 เวอร์ชันซึ่งจะเลือกเวอร์ชันสูงสุดที่กำหนด


2
ทำงาน 18.04.2 คำแนะนำแรกของคุณใช้ได้ผลสำหรับฉันและในที่สุดฉันก็สามารถรันการอัปเดต sudo apt-get โดยไม่มีข้อผิดพลาด คำแนะนำที่สองของคุณแสดงข้อผิดพลาดว่า apt-get.so ไม่ใช่โฟลเดอร์
ปิด ISQ

15

วิธีแก้ปัญหาของ@ user8178061ทำงานได้ดี แต่ฉันได้ทำการปรับเปลี่ยนบางอย่างสำหรับเวอร์ชันของฉันซึ่งก็คือpython3.7กับ Ubuntu

ฉันแทนที่apt_pkg.cpython-3m-i386-linux-gnu.soด้วยapt_pkg.cpython-36m-x86_64-linux-gnu.so

คำสั่งสองคำสั่งในการดำเนินการ:

cd /usr/lib/python3/dist-packages

sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so


1
สิ่งนี้ช่วยแก้ปัญหาของฉันได้ วิธีนี้จะแก้ปัญหาได้หากเกิดจากการเปลี่ยนเวอร์ชัน Python จาก 3.6 เป็น 3.7
JThistle

1
ขอบคุณมีปัญหาเดียวกัน! พิจารณาใช้sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.soเพื่อให้ชัดเจนว่าapt_pkg.soคืออะไร
Scipio

ทำงานได้ แต่ฉันต้องเปลี่ยนsudo cp apt_pkg.cpython-37m-x86_64-linux-gnu.so apt_pkg.soด้วยเหตุผลบางอย่าง
ดาเนียล

8

สิ่งนี้ใช้ได้ผลสำหรับฉันหลังจากอัปเดต python3.7 บน ubuntu18.04

cd /usr/lib/python3/dist-packages
sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so

1
สิ่งนี้ใช้ได้ผลสำหรับฉันหลังจากอัปเกรดpython 3.8บน ubuntu18.04
Henry Palacios

6

ด้วยเหตุผลบางประการการติดตั้งของฉันหายไปapt_pkg.soใน python3 dist-package dir ( apt_pkg.cpython-33m-x86_64-linux-gnu.soอยู่ที่นั่นหรือไม่!) แต่ฉันต้องสร้าง symlinkapt_pkg.so -> apt_pkg.cpython-33m-x86_64-linux-gnu.so ใน/usr/lib/python3/dist-packages

ฉันไม่แน่ใจว่าการอัปเกรดของฉันเสียหรือเพราะเหตุใดจึงเป็นเช่นนั้น มันเกิดขึ้นหลังจากพยายามอัพเกรด (แม่นยำ -> raring-> การอัพเกรดเชิงปริมาณ)


นี่คือการแก้ไขที่ถูกต้องสำหรับฉัน ฉันทำให้เกิดปัญหานี้โดยใช้ pip3 เป็นรูทแม้ว่าฉันจะรู้ว่ามันเป็นความคิดที่ไม่ดีก็ตาม ฉันอยากเห็นว่าฉันจะตกใจแค่ไหนถ้าเอานิ้วเข้าไปในซ็อกเก็ตไฟ คำตอบคือ: ค่อนข้างแย่ นอกจากนี้การยุ่งกับการตั้งค่า / etc / ทางเลือกก็ไม่ได้มีไว้สำหรับหลอกหัวใจ ไม่ใช่สำหรับใครก็ตามที่เป็นผู้เยี่ยมชมนอกเวลา ฉันคิดว่าการข้ามสิ่งที่ลิงค์หลามชี้ไปที่งูหลามเป็นปัญหาที่ทำให้ฉันก้าวไปสู่หายนะ
pauljohn32

6
  1. ตรวจสอบเวอร์ชัน Python 3 เริ่มต้นของคุณ:
python --version
Python 3.7.5
  1. cdเข้าไป/usr/lib/python3/dist-packagesและตรวจสอบapt_pkg.*ไฟล์ คุณจะพบว่าไม่มีเวอร์ชัน Python เริ่มต้นของคุณ:
ll apt_pkg.*
apt_pkg.cpython-36m-x86_64-linux-gnu.so
  1. สร้าง symlink:
sudo ln -s apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.cpython-37m-x86_64- linux-gnu.so 

5

ทางเลือกสุดท้ายคือsudo cp /usr/lib/python3/dist-packages/apt_pkg.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-x86_64-linux-gnu.so ถ้าlnคำสั่งมากเกินไปสำหรับคุณหรือไม่ได้ผลอย่างน่าอัศจรรย์

cpข้างต้นอาจเป็นได้mvหากคุณทุ่มเทให้กับการใช้ Python เวอร์ชันเดียวเท่านั้น


3

หากคุณใช้ python 3.5 ให้ดาวน์เกรดเป็น 3.4 นั่นเป็นการย้ายที่ปลอดภัยที่สุด

ภายใต้/usr/lib/python3/dist-packagesคุณจะเห็น*34m*ซึ่งหลาม 3.5 ไม่สามารถใช้ zhazha ตอบ symlink ไป


คุณจะปรับลดรุ่นได้อย่างไร
Pynchia

ทำไมการปรับลดรุ่นจึงเป็นแอคตินที่ปลอดภัยที่สุด?
David Medinets

3

นอกเหนือจากการสร้างลิงก์สัญลักษณ์สำหรับapt_pkg.soคุณอาจต้องการสร้างapt_inst.soในลักษณะเดียวกันของapt_pkg.soไฟล์.

ln -s apt_inst.cpython-35m-x86_64-linux-gnu.so apt_inst.so 

3

หากคุณใช้ python 3.7 ดาวน์เกรดเป็น python 3.6 โดยการอัปเดตทางเลือกสิ่งนี้ใช้ได้กับฉัน

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1

sudo update-alternatives --config python3

สิ่งนี้ใช้ได้กับฉันกับ python3.6 แต่เมื่อฉันเปลี่ยนกลับเป็น python3.7 ข้อผิดพลาดยังคงอยู่ที่นั่น
Hugo Sohm

1

ฉันเห็นทุกคนบอกวิธีแก้ไขด้วยการคัดลอกแปลก ๆ ฯลฯ แต่ไม่มีใครบอกว่าทำไมปัญหาถึงเกิดขึ้น

ให้ฉันอธิบายสำหรับพวกคุณที่ชอบฉันไม่ต้องการยุ่งกับไฟล์ระบบเพียงเพราะมีคนใน SO บอกพวกเขาอย่างนั้น


ปัญหาคือ:

  • สคริปต์ระบบจำนวนมากมีการเข้ารหัส python3 shebang ไว้ในฮาร์ดโค้ด คุณสามารถตรวจสอบได้ด้วยตัวเอง:
~$ grep -R "\#\!/usr/bin/python3" /usr/lib/*

/usr/lib/cnf-update-db:#!/usr/bin/python3
/usr/lib/command-not-found:#!/usr/bin/python3
/usr/lib/cups/filter/pstotiff:#!/usr/bin/python3
/usr/lib/cups/filter/rastertosag-gdi:#!/usr/bin/python3 -u
grep: /usr/lib/cups/backend/cups-brf: Permission denied
/usr/lib/cups/backend/hpfax:#!/usr/bin/python3
/usr/lib/language-selector/ls-dbus-backend:#!/usr/bin/python3
/usr/lib/python3/dist-packages/language_support_pkgs.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/installdriver.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/openprinting.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/xmldriverprefs.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/smburi.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/ppds.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/debug.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/DistUpgrade/dist-upgrade.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/CommandNotFound/db/db.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/Quirks/quirkreader.py:#!/usr/bin/python3
grep: /usr/lib/ssl/private: Permission denied
/usr/lib/system-service/system-service-d:#!/usr/bin/python3
/usr/lib/ubuntu-release-upgrader/check-new-release-gtk:#!/usr/bin/python3
/usr/lib/ubuntu-release-upgrader/do-partial-upgrade:#!/usr/bin/python3
/usr/lib/ubuntu-release-upgrader/check-new-release:#!/usr/bin/python3
/usr/lib/update-notifier/package-data-downloader:#!/usr/bin/python3
/usr/lib/update-notifier/backend_helper.py:#!/usr/bin/python3
/usr/lib/update-notifier/apt_check.py:#!/usr/bin/python3
/usr/lib/update-notifier/apt-check:#!/usr/bin/python3

  • python apt package python-apt/ python3-aptเป็นแพ็คเกจระบบดังนั้นจึงเป็น python ของระบบเริ่มต้น

ดังนั้นสคริปต์จะได้รับเวอร์ชันที่เชื่อมโยงอยู่ในปัจจุบันเสมอpython3แต่ล้มเหลวเนื่องจากไม่มีแพ็กเกจ apt


วิธีแก้ปัญหาทั่วไป: python3อย่าเปลี่ยนลิงค์เริ่มต้น เคย. นอกจากนี้ยังใช้กับpythonลิงก์ - หากแอปเขียนด้วย Python2 โดยมีองค์ประกอบไวยากรณ์เก่าบางอย่างที่ใช้ไม่ได้ใน Python3 แอปจะไม่ทำงาน

[เทอร์มินัลของฉันพังแบบนั้นเพราะฉันใช้ Terminator ซึ่งเห็นได้ชัดว่าเขียนด้วย Python2.7 ไม่เข้ากันกับ Python3]


โซลูชันที่นำเสนอที่นี่อาจแนะนำให้คัดลอก / เชื่อมโยงไฟล์แพ็กเกจ apt หรือเปลี่ยนpython3ลิงค์

ลองวิเคราะห์ทั้งสองอย่าง:

  1. คัดลอก / เชื่อมโยงแพ็คเกจ apt

สิ่งนี้ไม่น่าจะเป็นปัญหาเพราะสคริปต์ Python จาก Python3.4 ทั้งหมดทำงานในเวอร์ชันที่ใหม่กว่าเช่นกัน

จนถึงตอนนี้ แต่อาจพังได้ในอนาคต - หากคุณรักษาระบบไว้นานพอ

  1. กำลังเปลี่ยนpython3ลิงค์กลับ

นี่เป็นวิธีแก้ปัญหาที่ยอดเยี่ยมเพราะเราสามารถกลับไปที่ "ไม่เคยเปลี่ยนลิงก์"


"แต่ฉันชอบที่ต้องพิมพ์เฉยๆpython!" - ฉันชอบมันเหมือนกัน! นั่นเป็นวิธีที่ฉันประสบปัญหานี้ตั้งแต่แรก!

  1. โดยทั่วไปคุณควรหลีกเลี่ยงการเปลี่ยนลิงก์ระบบด้วยตนเอง - ใช้update-alternativesลิงก์เวอร์ชันต่างๆแทน สิ่งนี้ใช้ได้กับแอปที่มีหลายเวอร์ชัน สิ่งนี้จะยังทำลายสคริปต์ระบบเหล่านั้น (เพราะมันเปลี่ยนลิงค์) แต่คุณสามารถสลับไปมาได้อย่างง่ายดายโดยไม่ต้องกังวลว่าคุณจะใส่ลิงค์และปลายทางในลำดับที่ถูกต้องหรือพิมพ์ผิด

  2. ลองใช้ชื่ออื่นที่ไม่ใช่python/ python3สำหรับลิงค์หรือนามแฝงของคุณ

  3. หรือเพิ่มpython/ python3ลิงก์ของคุณเองไปยัง PATH (เช่นเดียวกับสภาพแวดล้อมเสมือนจริง) โดยไม่ต้องเปลี่ยนลิงก์ระบบ




0

ไม่มีคำตอบใดที่ใช้ได้กับฉัน (ฉันใช้ Ubuntu 16.04 และ Python 3.6) ในที่สุดฉันก็แก้ไขปัญหาดังต่อไปนี้:

1- เชื่อมต่อกับ FTP ของเซิร์ฟเวอร์

2- ไปที่โฟลเดอร์ "/ usr / lib / python3 / dist-Packages /"

3- ทำซ้ำไฟล์ "apt_pkg.cpython-3 5 m-x86_64-linux-gnu.so"

4- เปลี่ยนชื่อไฟล์ที่ซ้ำกันนี้เป็น "apt_pkg.cpython-3 6 m-x86_64-linux-gnu.so"

แค่นั้นแหละ!


0

ฉันใช้ Ubuntu 16.04 และอัปเกรดเป็น Python 3.7 นี่คือข้อผิดพลาดที่ฉันพบเมื่อพยายามเพิ่ม PPA

    sudo add-apt-repository ppa:ubuntu-toolchain-r/test                                           
Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 11, in <module>
    from softwareproperties.SoftwareProperties import SoftwareProperties, shortcut_handler
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 27, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

ฉันสามารถแก้ไขข้อผิดพลาดนี้ได้โดยสร้างลิงก์สัญลักษณ์ด้วย python 3.4 เริ่มต้นของฉัน apt_pkg.cpython-34m-x86_64-linux-gnu.so โดยสร้างลิงก์สัญลักษณ์ต่อไปนี้

sudo ln -s apt_pkg.cpython-34m-x86_64-linux-gnu.so apt_pkg.so

1
ดูเหมือนว่าโซลูชันนี้ได้ถูกเสนอไปแล้วอย่างน้อย 6 คำตอบสำหรับคำถามนี้ (และอีก 3 คำแนะนำให้คัดลอกไฟล์แทนการเชื่อมโยงสัญลักษณ์)
Sergey Shubin

มันใช้งานได้สำหรับฉันขอบคุณ! สิ่งหนึ่งคือก่อนหน้านั้นเราต้อง cd / usr / lib / python3 / dist-Packages
Hao Yellow


-5

ในกรณีที่มันช่วยคนอื่นในที่สุดฉันก็แก้ปัญหานี้ได้ซึ่งเห็นได้ชัดว่าเกิดจากความขัดแย้งของเวอร์ชัน python โดยเปลี่ยนเส้นทางลิงก์ python3 จากนั้นเปลี่ยนเส้นทางไปยังเวอร์ชัน python ที่ถูกต้อง:

sudo rm /usr/bin/python3
sudo ln -s /usr/bin/python3.4

คุณอาจต้องป้อนเวอร์ชัน python ที่ถูกต้องซึ่งพบได้จาก:

python3 -V

2
ลบ python3 เป็นความคิดที่ไม่ดี :( หากคุณต้องการเชื่อมโยงไปยัง python 3.4 ให้ใช้: ln -s /usr/bin/python3.4 / usr / bin / python3
Pamungkas Jayuda

1
ไม่ควรบอกให้ผู้คนนำสิ่งต่างๆออกจากระบบนั้นเว้นแต่จะมีความจำเป็นจริงๆ โชคดีที่ / usr / bin / python3 เป็นเพียงลิงก์สัญลักษณ์อยู่ดี ฉันคิดว่าคุณควรลบคำตอบนี้จริงๆ
Jamie Lindsey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.