2012-12-04 15 views
20

Jestem użytkownikiem Debiana, i chcę zainstalować python-dev, ale kiedy uruchomić kod w powłoce jako root:python-dev instalacja błąd: ImportError: No module o nazwie apt_pkg

# aptitude install python-dev 

I Uzyskaj następujący błąd:

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

Co wydaje się być problemem i jak mogę go rozwiązać?

+0

wygląda Twój apt ist złamane, co dzieje się podczas próby apt-get install python-dev –

+0

kiedy próbuję z apt-get install python-dev mówi że jest już zainstalowany: Czytanie list pakietów ... Gotowe Drzewo zależności budynku Czytanie informacji o stanie ... Wykonano python-dev jest już najnowszą wersją. 0 zaktualizowanych, 0 nowo zainstalowanych, 0 do usunięcia i 0 nie uaktualnionych. Jakieś inne sugestie? – Belphegor

Odpowiedz

23

Upewnij się, że masz działający pakiet python-apt. Możesz spróbować usunąć i zainstalować ten pakiet ponownie, aby rozwiązać problem z nieodnalezieniem apt_pkg.so.

apt-get install python-apt 
+0

Jest już zainstalowany. Kiedy hit: # apt-get install python-apt daje mi list pakietów ... Gotowe Czytanie zależność drzewo budynku Odczyt informacji o stanie ... Gotowe python-apt jest już w najnowszej wersji. 0 zaktualizowanych, 0 nowo zainstalowanych, 0 do usunięcia i 0 nie uaktualnionych. I kiedy spróbuję ponownie z: # aptitude install python-dev Daje mi ten sam błąd ponownie. Jakieś inne pomysły, co powinienem zrobić? – Belphegor

+2

usuń go za pomocą 'apt-get remove --purge python-apt' i zainstaluj go ponownie – Arnestig

+0

Wielkie dzięki @Arnestig, to faktycznie zadziałało! – Belphegor

4

Niedawno napotkał ten sam problem, gdy uruchamiam Python 3.3.0 skrypt w Aptana Studio Ubuntu quantal. Oprócz błędów ze skryptu pracuję nad, pojawia się następujący przemieszane ze sobą:

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 4, 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' 

Próbowałem usuwanie, czyszczenie, czyszczenie i ponowne zainstalowanie python3-apt, a rodzaj węszyć kawałka, i stwierdziłem, że błąd dotyczy tylko Pythona 3.3.0. Próba zaimportowania apt_pkg w programie IDLE powoduje powstanie tego samego błędu. Co ciekawe, importowanie tego przy pomocy IDLE z Pythonem 3.2.3 działa dobrze. Ponadto obie wersje Pythona 3.x.x mają ten sam numer /usr/lib/python3/dist-packages, aw nim są apt_pkg.cpython-32mu.so i apt_pkg.cpython-32dmu.so. Czy te pliki nie są kompatybilne z Pythonem 3.3.0?

Ostatnia rzecz, uruchomienie skryptu poza Aptana Studio daje mi błąd mojego skryptu bez komunikatu ImportError: No module named 'apt_pkg'.

+1

Otrzymuję twój komunikat o błędzie. Zobacz/usr/bin/apt-add-repository. Zauważ, że definiuje #!/usr/bin/python3. Problem polegał na tym, że zainstalowałem python3.3, a mój python3 ispointing do python3.3. Kiedy jawnie uruchomię 'sudo python3.2/usr/bin/apt-add-repository xxxx' zadziałało –

+0

OK, więcej światła na zagadkę: uruchomienie skryptu poza Aptana przez wywołanie' python3.2' lub 'python3' który wskazuje na 3,2 działa (co oznacza, że ​​otrzymuję błąd skryptu bez błędu "apt_pkg'), ale jeśli uruchomię go z' python3.3', to błąd powróci. – Roberto

+0

Ten wpis nie jest odpowiedzią na pytanie. Byłoby lepiej jako nowe pytanie z tymi szczegółami, z prośbą o odpowiedź. – bignose

3

Z jakiegoś powodu brakowało mi instalacji apt_pkg.so w python3 dist-packages reż. (apt_pkg.cpython-33m-x86_64-linux-gnu.so było ?!), ale i musiałem zrobić dowiązania apt_pkg.so -> apt_pkg.cpython-33m-x86_64-linux-gnu.so w /usr/lib/python3/dist-packages

Nie jestem pewien, czy mój uaktualnienia został uszkodzony lub dlaczego tak było. Wystąpił po próbie aktualizacji (precyzja-> raring-> aktualizacja kwantowa)

19

Ten problem wystąpił podczas wykonywania sudo apt-get update. Mój env to debian8, z python2.7 + 3.4 (domyślnie) + 3.5.

Poniższy kod będzie odtworzyć tylko plik apt_pkg....so dla Pythona 3,5

sudo apt-get install python3-apt --reinstall 

Poniższy kod rozwiązać mój problem,

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

Tak, oczywiście, kontrole python3-apt najwyższa python wersja, zamiast aktualnej wersji pythona w użyciu.

+0

Rozwiązałem mój problem, dziękuję bardzo! – laike9m

11

rozwiązać go w ten sposób:

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

1

Jeśli używasz Pythona 3.5, downgrade do 3.4. To najbezpieczniejszy ruch do zrobienia.

Pod /usr/lib/python3/dist-packages zobaczysz *34m*, którego nie może używać python 3.5. zhazha answer symlink to it.

0

Tylko w przypadku, to pomaga innym, w końcu rozwiązać ten problem, który był najwyraźniej spowodowane przez konflikty wersji Pythona, poprzez przekierowanie linku python3, następnie przekierowanie go do właściwej wersji Pythona:

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

Użytkownik może należy wprowadzić poprawną wersję Pythona, znalezionych:

python3 -V 
Powiązane problemy