ปัญหาเกี่ยวกับตัวจัดการอัพเดท: ไม่มีโมดูลชื่อ 'apt_pkg' ใน Ubuntu 13.10 โดยมีการติดตั้ง Python 3.4 บน / usr / local / lib


29

ฉันค่อนข้างใหม่กับ Ubuntu และฉันพยายามเรียกใช้ update-manager บน Ubuntu 13.10 ฉันเข้าใจ:

jacopo@jacopo-laptop:~$ update-manager 
Traceback (most recent call last):
  File "/usr/bin/update-manager", line 28, in <module>
    from gi.repository import Gtk
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 27, in <module> from ._gi import _API
ImportError: No module named 'gi._gi'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 20, in <module>
import apt
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 21, in <module>
import apt_pkg
ImportError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
File "/usr/bin/update-manager", line 28, in <module>
from gi.repository import Gtk
File "/usr/lib/python3/dist-packages/gi/__init__.py", line 27, in <module>
from ._gi import _API
ImportError: No module named 'gi._gi'

เท่าที่ฉันเข้าใจนี่เป็นปัญหาที่เกี่ยวข้องกับความจริงที่ว่าฉันควรติดตั้ง python3.4 ฉันติดตั้งไว้/usr/local/libแต่ฉันได้รับข้อผิดพลาดเดียวกันเสมอ ด้วยวิธีนี้ฉันไม่สามารถอัพเกรดเป็น Ubuntu 14.04 ได้

คำตอบ:


32

ติดตั้งใหม่apt_pkgโดยใช้:

sudo apt-get install --reinstall python3-apt

ข้อผิดพลาดเป็นหลักเพราะห้องสมุดไม่เป็นอยู่ในปัจจุบันapt_pkg.cpython-35m-x86_64-linux-gnu.so/usr/lib/python3/dist-packages

การลบและติดตั้งใหม่ควรช่วย


14
มันเกือบจะดีกว่าที่จะติดตั้งแพคเกจในขั้นตอนเดียวsudo apt install --reinstall <package-name>เพราะหลีกเลี่ยงการคำนวณและลบการอ้างอิง (และทำเครื่องหมายแพ็คเกจเพื่อลบ) โปรดทราบว่าการลบแพ็คเกจไม่ใช่ขั้นตอนที่ย้อนกลับได้เสมอไป ตัวอย่างเช่น APT จะลบตัวเองหรือการอ้างอิงถ้าถาม! --reinstallธงจึงปลอดภัยกว่าตามมาด้วยremove คำสั่งด้วยตัวเองไม่ได้ลบแฟ้มการกำหนดค่าของแพคเกจเพื่อให้มีผลประโยชน์มากกว่าไม่มี installremoveinstall --reinstall
Zanna

4
คำตอบนี้ควรได้รับการอัปเดตด้วยคำแนะนำโดย @Zanna การลบ python3-apt จะเป็นการลบการอ้างอิงจำนวนมากและอาจทำให้อึของใครบางคนไม่พูดถึงการทำให้ระบบยุ่งเหยิง
alkanen

ดังนั้นถอนการติดตั้ง apt-package ด้วยsudo dpkg -r --force-depends apt-packageซึ่งจะเป็นการถอนการติดตั้ง apt-package เพียงอย่างเดียว แต่ไม่มีการอ้างอิงใด ๆ
karel

12

สำหรับฉันขั้นตอนต่อไปนี้ทำงาน:

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

โซลูชันดั้งเดิมอยู่ที่นี่: /programming/13708180/python-dev-installation-error-importerror-no-module-named-apt-pkg/36232975#36232975


1
ตามที่ระบุไว้ในความคิดเห็นในช่วงที่ "วิธีการแก้ปัญหาเดิม" sudo ln -s apt_pkg.cpython-{35m,36m}-x86_64-linux-gnu.soสำหรับฉันนี้ทำงาน: รุ่น35(python 3.5) คือสิ่งที่ติดตั้งโดยไม่คำนึงถึงรุ่นย่อยของ python 3.x ที่คุณใช้งานอยู่ ขอบคุณ!
fwc

6
update-alternatives  --set python3  /usr/bin/python3.6

3
การอัปเดตทางเลือกสำหรับไพ ธ อนอาจทำให้บางสิ่งเสียหาย
Kulfy

1
ฉันใช้update-alternatives --set python3 /usr/bin/python3.5และมันใช้งานได้ python3 ชี้ไปpython3.6ที่ระบบของฉันแล้ว
Desik

2

ถ้าคุณกำลังพยายามที่จะปรับ 13.10-14.04 ให้ลองทำตามคำแนะนำเหล่านี้ หากคุณเพียงแค่พยายามอัพเดตระบบปัจจุบันของคุณจากบรรทัดคำสั่งให้เปิดเทอร์มินัลแล้วพิมพ์ต่อไปนี้:

sudo apt-get update
sudo apt-get dist-upgrade

ขอบคุณ ฉันลองไปแล้ว แต่ใช้งานไม่ได้ ฉันพยายามอีกครั้งตอนนี้ได้รับหลังจากการปรับปรุง apt-get เตือน W: ไม่สามารถดึงข้อมูล bzip2: /var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_saucy-updates_main_source_Sources แฮซำไม่ตรงกัน
user291925

K - คุณมีปัญหากับแหล่งที่มาของการอัพเดท ฉันได้เห็นหลายหัวข้อเกี่ยวกับวิธีการแก้ไขที่ลิงค์ต่อไปนี้น่าจะตรงกับคำถามของคุณ askubuntu.com/questions/41605//
Charles Green

ขอบคุณ! ฉันพยายาม แต่ฉันยังคงได้รับข้อผิดพลาดเดิมเมื่อใช้งานupdate-manager
291925

K - นั่นเกี่ยวกับการหมดความเป็นไปได้ของฉันโดยไม่ต้องค้นหาเว็บที่ครอบคลุมมากขึ้น โชคดี!
ชาร์ลส์กรีน

2

ฉันจัดการเพื่อแก้ไขปัญหานี้ได้โดยการคัดลอกapt_pkg.cpython-34m-i386-linux-gnu.soไป/usr/lib/python3/dist-packages/ยังเดสก์ท็อปอื่นที่ใช้ Ubuntu 14.04 LTS ฉันพยายามเป็นไปได้เกือบทั้งหมดที่พบบนอินเทอร์เน็ตเช่นการกำจัดการติดตั้งหลามแล้วติดตั้งใหม่การทำความสะอาดไฟล์อัพเกรดที่เสียหาย ฯลฯ แต่จบลงด้วยความสำเร็จ


1

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

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

คุณอาจต้องป้อนรุ่นงูหลามที่ถูกต้องซึ่งพบได้

python3 -V

ดังนั้นคุณลบหนึ่งเวอร์ชัน3.4ใช่หรือไม่
IggyPass

พยายามนี้และพบว่ามันจะทำให้สิ่งที่เลวร้าย ไม่สามารถแนะนำ
ลดลง

1

เพียงคำแนะนำ: ฉันหลีกเลี่ยงการติดตั้งหลาม "ของฉัน" บน / usr / local แต่ฉันมีหนึ่งไดเรกทอรีเฉพาะสำหรับรุ่นหลาม (เช่นใน / opt) และฉันใช้สภาพแวดล้อมเสมือนในบัญชีผู้ใช้ของฉันเพื่อใช้หลามฉันต้องการ ซึ่งเปิดใช้งานโดย. profile ของฉัน

ด้วยวิธีการนี้คุณจะหลีกเลี่ยงการเปลี่ยนการตั้งค่าและการอ้างอิงของระบบไพ ธ อน

ฉันรู้ว่ามันสายเกินไปสำหรับกรณีของคุณ แต่ ...


1

ปัญหาสำหรับฉันคือฉันติดตั้ง python3.7 ถัดจาก python3.6 และทำให้เป็นค่าเริ่มต้น

ฉันรันคำสั่งต่อไปนี้ด้วยตนเอง:

ln -s /usr/bin/python3.6  /usr/bin/python3

ดังนั้น python3 จึงชี้ไปที่เวอร์ชันที่ถูกต้องของ python ... ที่แก้ปัญหาได้


1
ฉันยังต้องเผชิญปัญหาเพราะผมปรับปรุงเพื่อ python3.7 ในอูบุนตู 18. แต่เมื่อผมทำในสิ่งที่คุณไม่ (สร้างการเชื่อมโยงสัญลักษณ์) ln: failed to create symbolic link '/usr/bin/python3': File existsผมได้ ถ้าฉันทำlsในของฉัน/usr/bin/python*ฉันมีpython3, python3.6, python3.6m, python3.7, และpython3.7m python3mถ้าผมทำsudo update-alternatives --config python3ผมมี*0 /usr/bin/python3.7 2 auto mode, และ1 /usr/bin/python3.6 1 manual mode 2 /usr/bin/python3.7 2 manual modeขอขอบคุณ.
user1330974

อาจเป็นเพราะคุณต้องการลบไฟล์ลิงค์ที่มีอยู่แล้วหรือเปลี่ยนชื่อเป็น. old และสร้างลิงค์ของคุณเอง
M.Hefny

@ user1330974 ในที่สุดคุณก็แก้ปัญหาได้หรือไม่ ฉันกำลังเผชิญกับปัญหาเดียวกัน
dallonsi

1
เห็นได้ชัดว่า @ user1330974 เพียงบังคับใช้การเชื่อมโยงสัญลักษณ์:ln -sf /usr/bin/python3.6 /usr/bin/python3
dallonsi

1
@donsons ขอบคุณ ฉันไม่ได้มองไปไกลกว่านี้ แต่ฉันจะใช้วิธีการของคุณ :)
user1330974
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.