Parece que rompí mi instalación de python cuando quería cambiar a python 3.8. Usando Ubuntu 18.04. Intentando usar el gi , da el siguiente error:
$ python Python 3.8.1 (default, Dec 31 2019, 18:42:42) [GCC 7.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from gi.repository import GLib, Gio Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python3/dist-packages/gi/__init__.py", line 42, in <module> from . import _gi ImportError: cannot import name '_gi' from partially initialized module 'gi' (most likely due to a circular import) (/usr/lib/python3/dist-packages/gi/__init__.py)Intenté ejecutar update-alternatives para python, pero me dice que solo hay una alternativa de python configurada (3.8).
Intenté reinstalar python3-gi y python3.8. Sigue el mismo problema
Tiene el mismo problema, no se puede cargar el módulo desde la carpeta del script. En mi caso, funciona si cambio el directorio de trabajo, por ejemplo (pero solo para el comando en línea):
cd /tmp; python -c 'from gocd import Server' echo $? 0Después de copiar el script a /tmp, no funciona
cp gocd.py /tmp cd /tmp; python -c 'from gocd import Server' Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/gocd.py", line 3, in <module> from gocd import Server ImportError: cannot import name 'Server' from partially initialized module 'gocd' (most likely due to a circular import) (/tmp/gocd.py)Instale gi para python 3.8: python3.8 -m pip install pgi Luego, en lugar de import gi , use:
import pgi pgi.install_as_gi() from gi.repository import GLib, GioAlternativamente, puede forzar la instalación de PyGObject para python 3.8:
sudo python3.8 -m pip install --ignore-installed PyGObject
lo que debería permitirle a uno from gi import ... como antes.
Tuve el mismo problema. Enlacé python3 a python3.6, para mí apuntaba a 3.8. Eso resolvió el problema.
cd /usr/bin/ rm python3 ln -s python3.6 python3Eso es todo. Ahora mi sistema comenzó a funcionar bien.
Encontré la respuesta aquí https://bugzilla.redhat.com/show_bug.cgi?id=1709787 :
La causa es: /usr/lib64/python3.8/site-packages/gi/_gi.cpython-38m-x86_64-linux-gnu.so tiene un nombre incorrecto:
sh-5.0# python3 -c 'from gi.repository import GLib' Rastreo (última llamada más reciente): Archivo "", línea 1, en Archivo "/usr/lib64/python3.8/site-packages/gi/ init . py", línea 42, en from . import _gi ImportError: no se puede importar el nombre '_gi' de 'gi' (/usr/lib64/python3.8/site-packages/gi/ init .py) sh-5.0# mv /usr/lib64/python3.8/site- paquetes/gi/_gi.cpython-38m-x86_64-linux-gnu.so /usr/lib64/python3.8/site-packages/gi/_gi.cpython-38-x86_64-linux-gnu.so sh-5.0# python3 -c 'desde gi.repository import GLib'
Tenga en cuenta que desde 3.8.0a4, se supone que la "m" no está allí. ¿Está de alguna manera codificado?
sh-5.0# python3-config --extension-suffix .cpython-38-x86_64-linux-gnu.so
en mi caso fue
$ sudo ln -s /usr/lib/python3/dist-packages/gi/_gi.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/gi/_gi.cpython-38-x86_64-linux-gnu.so $ sudo ln -s /usr/lib/python3/dist-packages/gi/_gi_cairo.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/gi/_gi_cairo.cpython-38-x86_64-linux-gnu.soPara mí, la solución fue crear un enlace simbólico:
cd /usr/lib/python3/dist-packages/gi/ sudo ln -s _gi.so _gi.cpython-38-x86_64-linux-gnu.soy me resolvió el problema.
El motivo de este error es que esta aplicación no puede encontrar la versión de Python correspondiente de _gi_cairo.cpython-(version)-x86_64-linux-gnu.so.
Normalmente, esta situación inigualable se debe a un uso mixto incorrecto de diferentes versiones de Python.
Básicamente, puede intentar cambiar su versión de Python (a la versión predeterminada de su sistema operativo). O puede ir a '/usr/lib/python3/dist-packages/gi' y crear un nuevo archivo de biblioteca .so:
cp _gi_cairo.cpython-(old version)-x86_64-linux-gnu.so _gi_cairo.cpython-(new version)-x86_64-linux-gnu.soo
ln -s _gi_cairo.cpython-(old version)-x86_64-linux-gnu.so _gi.so