Sự cố với trình quản lý cập nhật: Không có mô-đun nào có tên 'apt_pkg' trong Ubuntu 13.10, đã cài đặt Python 3.4 trên / usr / local / lib


29

Tôi còn khá mới với Ubuntu và tôi đang cố gắng chạy trình quản lý cập nhật trên Ubuntu 13.10. Tôi có:

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'

Theo như tôi đã hiểu, đây là một vấn đề liên quan đến thực tế là tôi nên cài đặt python3.4. Tôi đã cài đặt nó /usr/local/lib, nhưng tôi luôn gặp lỗi tương tự. Theo cách này, tôi thậm chí không thể nâng cấp lên Ubuntu 14.04.

Câu trả lời:


32

Cài đặt lại apt_pkgbằng cách sử dụng:

sudo apt-get install --reinstall python3-apt

Lỗi chủ yếu là do thư viện apt_pkg.cpython-35m-x86_64-linux-gnu.sokhông có mặt /usr/lib/python3/dist-packages.

Loại bỏ và cài đặt lại sẽ giúp.


14
Hầu như luôn luôn thích cài đặt lại gói trong một bước bằng cách sử dụng sudo apt install --reinstall <package-name>, vì điều này tránh tính toán và loại bỏ các phụ thuộc (và đánh dấu các gói để loại bỏ). Xin lưu ý rằng việc gỡ bỏ các gói không phải lúc nào cũng là một thủ tục có thể đảo ngược; ví dụ APT sẽ loại bỏ chính nó hoặc các phụ thuộc của nó nếu được yêu cầu! Các --reinstalllá cờ là do đó an toàn hơn nhiều so với removetiếp theo install. Các removelệnh của chính nó không gỡ bỏ những file cấu hình của một gói để không có lợi ích hơn install --reinstall.
Zanna

Hoàn hảo! Nó làm việc cho tôi!
Francis

8
Bây giờ tôi đang gặp lỗi sau: sudo: add-apt-repository: command not found@vikas kapdoskar
alper

1
sudo: add-apt-repository: command not foundgặp lỗi này trong Ubuntu 16:04
Tinkal Gogoi

4
Câu trả lời này cần được cập nhật với đề xuất của @Zanna, loại bỏ python3-apt sẽ loại bỏ hàng tấn phụ thuộc và có thể khiến mọi người sợ hãi, không đề cập đến việc làm rối hệ thống của họ.
alkanen

11

Đối với tôi các bước sau đây đã làm việc:

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

giải pháp ban đầu có tại đây: /programming/13708180/python-dev-installation-error-importerror-no-module-named-apt-pkg / 232327575


1
Như đã đề cập trong một nhận xét tại "giải pháp ban đầu", đối với tôi điều này đã làm việc : sudo ln -s apt_pkg.cpython-{35m,36m}-x86_64-linux-gnu.so. Phiên bản 35(python 3.5) là những gì được cài đặt bất kể phiên bản phụ cụ thể của python 3.x mà bạn đang chạy. Cảm ơn!
fwc

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

3
Cập nhật các lựa chọn thay thế cho trăn đôi khi có thể phá vỡ mọi thứ.
Kulfy

1
Tôi đã sử dụng update-alternatives --set python3 /usr/bin/python3.5và nó đã làm việc. python3 đã trỏ đến python3.6hệ thống của tôi.
Desik

2

Nếu bạn đang cố nâng cấp 13.10 lên 14.04, hãy thử làm theo các hướng dẫn sau . Nếu bạn chỉ đang cố cập nhật hệ thống hiện tại của mình từ dòng lệnh, hãy mở một thiết bị đầu cuối và gõ như sau:

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

Cảm ơn. Tôi đã thử nhưng nó không hoạt động. Tôi cố gắng một lần bây giờ nhiều hơn, nhận được, sau khi apt-get update, cảnh báo W: Không thể lấy bzip2: /var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_saucy-updates_main_source_Sources Hash Sum mismatch
user291925

K - bạn có một vấn đề với các nguồn cập nhật. Tôi đã thấy một số chủ đề về cách khắc phục Liên kết sau đây có vẻ phù hợp với câu hỏi của bạn Askubfox.com/questions/41605/ trộm
Charles Green

Cảm ơn! Tôi đã thử, nhưng tôi vẫn gặp lỗi tương tự khi chạyupdate-manager
user291925

K - điều đó làm cạn kiệt khả năng của tôi với việc tìm kiếm trên web rộng hơn. Chúc may mắn!
Charles Green

2

Tôi đã quản lý để giải quyết việc này bằng cách sao chép apt_pkg.cpython-34m-i386-linux-gnu.sođến /usr/lib/python3/dist-packages/từ một máy tính để bàn chạy Ubuntu 14.04 LTS. Tôi đã thử hầu hết tất cả các khả năng tìm thấy trên internet như, xóa cài đặt python và sau đó cài đặt lại, làm sạch các tệp nâng cấp bị hỏng, v.v., nhưng cuối cùng không thành công.


2

Chỉ trong trường hợp nó giúp được người khác, cuối cùng tôi đã giải quyết được vấn đề này, rõ ràng là do xung đột phiên bản python, bằng cách chuyển hướng liên kết python3, sau đó chuyển hướng nó sang phiên bản python đúng:

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

Bạn có thể cần phải nhập đúng phiên bản python, được tìm thấy với

python3 -V

Vì vậy, bạn loại bỏ một phiên bản cho 3.4?
IggyPass

1

Chỉ là một lời khuyên: Tôi tránh cài đặt "python" của tôi trên / usr / local, nhưng tôi có một thư mục dành riêng cho mỗi phiên bản python (ví dụ: trong / opt) và tôi đang sử dụng môi trường ảo trên tài khoản người dùng của mình để sử dụng python tôi cần, được kích hoạt bởi .profile của tôi

Theo cách tiếp cận này, bạn sẽ luôn tránh thay đổi cấu hình và phụ thuộc dự kiến ​​của hệ thống python.

Chà, tôi biết, đã quá muộn cho trường hợp của bạn, nhưng ...


1

Vấn đề đối với tôi là tôi đã cài đặt python3.7 bên cạnh python3.6 và biến nó thành mặc định.

Tôi tự chạy lệnh sau:

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

vì vậy python3 hiện chỉ ra phiên bản chính xác của python ... giải quyết được vấn đề.


1
Tôi cũng đang đối mặt với vấn đề này vì tôi đã cập nhật lên python3.7 trong Ubuntu 18. Nhưng khi tôi làm những gì bạn đã làm (tạo liên kết tượng trưng), tôi đã nhận được ln: failed to create symbolic link '/usr/bin/python3': File exists. Nếu tôi làm lstrong tôi /usr/bin/python*, tôi có python3, python3.6, python3.6m, python3.7, python3.7mpython3m. Nếu tôi làm sudo update-alternatives --config python3, tôi có *0 /usr/bin/python3.7 2 auto mode, 1 /usr/bin/python3.6 1 manual mode2 /usr/bin/python3.7 2 manual mode. Cảm ơn bạn.
dùng1330974

có thể bạn cần xóa một tập tin liên kết đã tồn tại hoặc đổi tên nó thành .old và tạo liên kết của riêng bạn.
M.Hefny

@ user1330974 cuối cùng bạn đã giải quyết vấn đề? Tôi đang đối mặt với cùng một vấn đề
dallonsi

1
@ user1330974 rõ ràng, chỉ buộc liên kết tượng trưng hoạt động:ln -sf /usr/bin/python3.6 /usr/bin/python3
dallonsi

1
@dallonsi Cảm ơn bạn. Tôi không nhìn sâu hơn nữa, nhưng tôi sẽ sử dụng cách tiếp cận của bạn. :)
dùng1330974
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.