2017-01-18 12 views
10

I installed Python 3.6 on Ubuntu 16.04 za pomocą Jonathon Fernyhough's PPA:ModuleNotFoundError w tracebacks z Python3.6 na linux

sudo add-apt-repository ppa:jonathonf/python-3.6 
sudo apt-get update 
sudo apt-get install python3.6 

zrobiłem ciąg, używając nowego dosłownego interpolacji ciąg, ale dostarczony nieprawidłowy format specyfikatora. Mam nie tylko oczekiwane ValueError: Invalid format specifier, ale także nieoczekiwane ModuleNotFoundError: No module named 'apt_pkg'.

$ python3.6 
Python 3.6.0 (default, Dec 29 2016, 21:40:36) 
[GCC 5.4.1 20161202] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> value = 4 * 20 
>>> f'the value is {value:%A}' 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: Invalid format specifier 
Error in sys.excepthook: 
Traceback (most recent call last): 
    File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, 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 23, in <module> 
    import apt 
    File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module> 
    import apt_pkg 
ModuleNotFoundError: No module named 'apt_pkg' 

Original exception was: 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: Invalid format specifier 

Poinformowałem o tym Python bug tracker. Zauważono, że:

Wydaje się, że jest to problem dostawcy, a nie samego CPython. Ten sam problem występuje również w Pythonie 3.6 Ubuntu 16.10. Podnieść każdy wyjątek może powodować:

Python 3.6.0b2 (default, Oct 11 2016, 05:27:10) 
[GCC 6.2.0 20161005] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> raise Exception 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
Exception 
Error in sys.excepthook: 
Traceback (most recent call last): 
    File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, 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 23, in <module> 
    import apt 
    File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module> 
    import apt_pkg 
ModuleNotFoundError: No module named 'apt_pkg' 

Original exception was: 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
Exception 
>>> 

zobaczyć również https://bugs.launchpad.net/ubuntu/+source/python3.6/+bug/1631367.

Wreszcie sprawa została zamknięta z komentarzem

Tak, to wydaje się być brak sprzedawca za raportowanie infrastrukturę że jest wadliwa. Dlaczego chcą raportu dla każdego traceback na interaktywnym monitem jest poza mną, ale wydaje się, że są one, co próbują zrobić.

Moje pytania są teraz:

  1. Jak interpretować ten komentarz? Czy sprzedawca jest w tym przypadku PPA Jonathona Fernyhougha? I czy zmienił coś na kod Pythona, który rozprowadza, tak, że próbuje złożyć raport dla każdego wyjątku, który tworzy traceback?
  2. Do kogo należy powiadomić lub gdzie muszę zgłosić błąd, aby rozwiązać ten problem?
+0

Polecam [deadsnakes ppa] (https://launchpad.net/~fkrull/+archive/ubuntu/deadsnakes). – hwjp

+0

'sudo add-apt-repository ppa: fkrull/deadsnakes' to sposób na pójście imho. –

Odpowiedz

10

Po Zamieściłem to pytanie stackoverflow, Barry A. Warszawa złożył następujące comment do śledzenia błędów

Proszę zrozumieć, że instalacja Pythona 3.6 z losowym PPA robi nie zapewniają pełne wsparcie dla tej wersji tłumacza. Python 3.6 nie jest jeszcze obsługiwaną wersją w żadnej wersji Ubuntu (co zakładam, że używacie), chociaż pracujemy nad nią dla 17.04.

Bardzo często można zainstalować nowy pakiet interpretera Python 3 i wiele rzeczy będzie działać, ponieważ akcja infrastruktury Ubuntu moduły czystej Python we wszystkich zainstalowany Python 3 jest. Technicznie mówiąc, wszystkie będą miały/usr/lib/python3/dist-packages na sys.path , więc dowolny moduł czystego Pythona innej firmy zbudowany dla wersji Pythona 3 będzie mógł być importowany przez dowolne (budowane pakietowo) zainstalowana wersja Pythona 3.

Ale to 1) jest dalekie od stwierdzenia, że ​​te moduły stron trzecich będą działać; 2) czy , a nie zawierają jakiekolwiek pakiety zawierające moduły rozszerzające C , które muszą zostać przebudowane dla konkretnej wersji interpretera.

Obsługa nowej wersji Pythona to długi proces, dla którego właśnie rozpoczyna się . Skontaktuj się z nami pod adresem [email protected], aby uzyskać szczegółowe informacje na temat .

Ubuntu instaluje standardową obsługę wyjątków, dzięki czemu, gdy aplikacje Python i takie awarie, możemy gromadzić statystyki awarii, dzięki czemu możemy poświęcić zasoby na naprawę typowych problemów i regresji. apport (widoczny w oknie śledzenia) to infrastruktura informująca o awariach zgłaszania awarii. apport wywołuje apt_pkg, który jest modułem rozszerzenia (C++) , a zatem nie zostanie zbudowany dla wersji Python 3.6 zainstalowanej z tego PPA, chyba że oczywiście właściciel PPA (którego I nie znam) ma Wykonano również przebudowę Pythona 3 na cały archiwum. Ponieważ jestem w trakcie ustawiania tego, i wiem, że to całkiem sporo z pracy , wątpię, że zrobiono to dla tego raczej przypadkowego PPA.

Lista dyskusyjna ubuntu-devel jest lepszym miejscem do omówienia trwającej pracy w celu wprowadzenia wersji Python 3.6 jako obsługiwanej w systemie Ubuntu.