ImportError Python: Никакой модуль не назвал репозиторий

У меня было три версии установленного Python; 2.7, 3.2 и 3.4, Когда я имел всего 2.7 и 3.2, все было прекрасно. Но после установки 3.4 вручную из источника, вещи начали ломаться. 3.4 не имел gi таким образом, я установил его через pip3 и это пошло прекрасное.

После установки 3.4 и "gi", репозиторий пропал от 2,7 (это работало, прежде чем я установил 3.4):

>>> import gi.repository
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named repository

Таким образом, я переустановил python-gi и repository все еще отсутствует. Таким образом в убеждении, я вручную удалил python 3.2 и 3.4 просто путем удаления двоичных файлов из /usr/local и также удаляя каталоги по умолчанию, где они были установлены. Проблема все еще сохраняется. Снова, отметьте тот найденный Python repository точно перед установкой 3,4.

Кто-либо фиксирует?

0
задан 10 April 2015 в 03:26

2 ответа

Вам нужны версии Python 3 пакетов.

sudo apt-get install python3-gi
0
ответ дан 24 December 2019 в 01:40

Я должен допустить одну вещь: Мне нравится играть с Python много, потому что я использую Python много, и как следствие (поскольку мы люди), то, что мы играли может повредить вещи.

Таким образом, я пришел к этой проблеме, просто желая установить новую часть программного обеспечения на моей Ubuntu (14.04, вероятно, не важный по этой причине). Я запускаю 'Центр программного обеспечения Ubunty', и ничего не происходит.

После расследования как, туда, где эта часть запускается, я узнаю, что это можно назвать из командной строки как:

$ software-center
Traceback (most recent call last):
  File "/usr/bin/software-center", line 25, in <module>
    from gi.repository import Gtk, GObject
ImportError: No module named repository

Ну и дела. Я на подобном месте как Вы Как, черт возьми, я endup в этой ситуации для повреждения системного инструмента? Конечно, само собой разумеется то, что у меня есть многочисленный другой Python (и 2 и 3 и затем некоторый другой) установки поэтому, что центр программного обеспечения ожидает выполнять?

$ more /usr/bin/software-center
#! /usr/bin/python
# Copyright (C) 2009-2011 Canonical
#
# Authors:
#  Michael Vogt
la la la...

хорошо это /usr/bin/python затем.Посмотрим:

$ /usr/bin/python --version
Python 2.7.12

чтобы быть честным, я ожидал некоторую более низкую версию, но это прекрасно (надо надеяться). Итак, почему я не могу найти gi.repository?

$ /usr/bin/python
Python 2.7.12 (default, Jan  9 2017, 12:16:27) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gi.repository
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named repository
>>> import gi
>>> import gi.repository
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named repository

Загрузки Gi, но не имеет никакого репозитория. Это - загадка, которая взяла меня вокруг многих вопросов и ответов на переполнении стека. Партия подсказок тут и там, установил это, установил это, попробовал это и что, включая переустановку модулей даже Python по умолчанию, использующий склонный - добирается и переустановка левого и правого это и что модуль. Но проблема была упряма, это продолжало настаивать на том, чтобы не находить репозиторий независимо от того, что я попробовал различных рецептов в различных ответах.

Короче говоря - НИЧТО из этого НЕ РАБОТАЛО.

Я сделал перерыв, чтобы думать, как приблизиться к проблеме. Через некоторое время я прихожу к вопросу:

Как я знаю, какую библиотеку я на самом деле загружаю? Импорт в Python очень хорошо (однако несколько поверхностно) зарегистрирован. Это испытывает недостаток в более глубокой документации, которая может на самом деле помочь Вам бездельничать. Рассмотрение должно было устранить проблему через PYTHONPATH. Но затем...

Вмешательством судьбы я нахожу после прекрасной части записи. Не может благодарить достаточно за эту статью, поскольку она дала существенные подсказки, где искать проблему. Считайте его тщательно!

https://leemendelowitz.github.io/blog/how-does-python-find-packages.html

Lee, Вы - мой герой!

Следующие подсказки от статьи Lee, которую я изучаю, какие пути исследованы:

>>> import sys
>>> print '\n'.join(sys.path)

/usr/local/lib/python2.7/dist-packages/gi-1.2-py2.7.egg
/usr/lib/python2.7/dist-packages
/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
... la la la ...

эй, что /usr/local/lib/python2.7/dist-packages/gi-1.2-py2.7.egg в этом списке? Не, который, как предполагают, загрузил библиотеки из /usr/lib/python2.7/ нет /usr/local/lib/python2.7/ это - полностью другая установка Python и версия?!?! Я, должно быть, смешал что-то на некотором этапе.

Знание от других подсказок, что 'gi' обычно не устанавливается через зернышко (но через apt-get install python-gi) и я помню, что среди прочего установил gi для решения этой проблемы (который был неудачен за один раз). Не, что чтение других подсказок и идей не помогло - они добавили откусывание тут и там и пролили некоторый свет к проблеме.

У меня была идея: Что, если я просто деинсталлирую это 'gi'. Возможно, пути возвратились бы к нормальному. Однако я должен удостовериться, что поражаю правильное зернышко (не один из командной строки). Гарантировать что (выход () из Python) выполненный модуль зернышка вместо самого зернышка (что зернышко делает для нахождения вещей? это является все еще оставшимся без ответа.)

$ sudo /usr/bin/python -m pip uninstall gi
Uninstalling gi:
  /usr/local/lib/python2.7/dist-packages/gi-1.2-py2.7.egg
Proceed (y/n)? y
  Successfully uninstalled gi

Мило. Даже если Python попытается загрузить gi, то он не найдет его в /usr/local/lib/python2.7/dist-packages/

в результате:

$ /usr/bin/python
Python 2.7.12 (default, Jan  9 2017, 12:16:27) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print '\n'.join(sys.path)

/usr/lib/python2.7/dist-packages
/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/home/user/.local/lib/python2.7/site-packages
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages/PILcompat
/usr/lib/python2.7/dist-packages/gst-0.10
/usr/lib/python2.7/dist-packages/gtk-2.0
/usr/lib/pymodules/python2.7
/usr/lib/python2.7/dist-packages/ubuntu-sso-client
/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode

Как хороший :). Позволяет попытке теперь:

$ software-center

Вуаля! Это работает!!! Yeee!!!

Теперь, мораль истории:

Это не всегда, что Вы не устанавливали (потому что Вы полагаете его пропавшим без вести), но что-то, что установили дополнительный, и должно быть лучше быть удаленным.

Надежда это помогает кому-то.

1
ответ дан 24 December 2019 в 01:40

Другие вопросы по тегам:

Похожие вопросы: