Mi dnf deja de funcionar y muestra este error:
Traceback (most recent call last):
File "/usr/bin/dnf", line 57, in <module>
from dnf.cli import main
File "/usr/lib/python3.6/site-packages/dnf/__init__.py", line 31, in <module>
import dnf.base
File "/usr/lib/python3.6/site-packages/dnf/base.py", line 37, in <module>
import dnf.conf
File "/usr/lib/python3.6/site-packages/dnf/conf/__init__.py", line 40, in <module>
from dnf.conf.config import PRIO_DEFAULT, PRIO_MAINCONFIG, PRIO_AUTOMATICCONFIG
File "/usr/lib/python3.6/site-packages/dnf/conf/config.py", line 26, in <module>
from iniparse.compat import ParsingError, RawConfigParser as ConfigParser
File "/usr/lib/python3.6/site-packages/iniparse/__init__.py", line 6, in <module>
from .ini import INIConfig, change_comment_syntax
File "/usr/lib/python3.6/site-packages/iniparse/ini.py", line 47, in <module>
import six
ImportError: bad magic number in 'six': b'\x03\xf3\r\n'
Realmente no recuerdo nada de lo que instalé además de las propias actualizaciones de Fedora a través de dnf distro-sync. ¿Podría ser un problema con el cambio de versión de Python?
Yo uso la estación de trabajo Fedora 26 x86_64
Respuesta1
Parece que la six
biblioteca de Python está corrupta. ¿Qué obtienes con rpm -V python3-six
? Si esto no da resultados, el problema está en otra parte. Sin embargo, si obtienes algo como:
S.5....T. /usr/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc
intente eliminar el pyc
archivo ofensivo y sudo dnf list
vuelva a intentarlo ( sudo rm /usr/lib/python3.6/site-packages/__pycache__/six.cpython-36.pyc
)
Tenga en cuenta que no esgeneralmenteEs seguro eliminar archivos aleatorios, pero estos pyc
archivos son códigos de bytes precompilados como optimización y se volverán a crear.
rpm -Vf
Tenga en cuenta también que después de la recreación,aúnmuestra el archivo como cambiado, porque... así es. Pero probablemente solucionará este problema particular del "número mágico incorrecto".
Siesono funciona, algo peor está pasando.
Respuesta2
Intente buscar archivos posiblemente conflictivos:
sudo find / -name 'six.py*'
Si, por ejemplo, tiene un archivo /usr/bin/six.pyc
, Python intentará usarlo primero (debido al orden de carga del módulo). Reubicar/eliminar este archivo funcionó para mí.
Ver también:pregunta similar en Ask.fedoraproject.org