antoniosarosi / dotfiles

My dotfiles repo, here you can find all my window manager configs as well as documentation and a guide on how to make your own desktop environment.
MIT License
861 stars 186 forks source link

Error fish ModuleNotFoundError: No module named 'hostname' #25

Closed miguelgonrod closed 3 years ago

miguelgonrod commented 3 years ago

Estoy siguiendo el curso de mastermind pero a la hora de usar fish me aparece este error

Traceback (most recent call last): File "/home/miguel/.local/bin/hostname", line 34, in sys.exit(load_entry_point('hostname==1.0.1', 'console_scripts', 'hostname')()) File "/home/miguel/.local/bin/hostname", line 26, in importlib_load_entry_point return next(matches).load() File "/usr/lib/python3.9/importlib/metadata.py", line 77, in load module = import_module(match.group('module')) File "/usr/lib/python3.9/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1030, in _gcd_import File "", line 1007, in _find_and_load File "", line 984, in _find_and_load_unlocked ModuleNotFoundError: No module named 'hostname'

como puedo solucionarlo?

antoniosarosi commented 3 years ago

Es un error de Python, no tengo muy claro por qué está ahí. Estás ejecutando algun comando en ~/.config/fish/config.fish?

miguelgonrod commented 3 years ago

set fish_greeting ""

Aliases

alias grep "grep --color=auto" alias cat "ccat -G Plaintext="blink" -G Keyword="purple" -G String="darkgreen" -G Punctuation="brown" -G Comment="faint"" alias ls "exa --group-directories-first" alias tree "exa -T" alias pdf "xpdf"

Agnoster

set -g theme_display_user yes set -g theme_hide_hostname no set -g color_user_bg magenta set -g color_user_str black

Spacefish

set SPACEFISH_PROMPT_ADD_NEWLINE false set SPACEFISH_PROMPT_PREFIXES_SHOW false set SPACEFISH_PROMPT_DEFAULT_PREFIX " " set SPACEFISH_PROMPT_DEFAULT_SUFFIX " " set SPACEFISH_USER_SHOW always set SPACEFISH_USER_COLOR green set SPACEFISH_HOST_SHOW always set SPACEFISH_HOST_COLOR cyan set SPACEFISH_DIR_COLOR blue set SPACEFISH_PROMPT_ORDER time user host dir git package node ruby golang php rust haskell julia elixir docker aws venv conda pyenv dotnet kubecontext exec_time line_sep battery vi_mode jobs exit_code char

neofetch

esto es todo lo que tiene el archivo

antoniosarosi commented 3 years ago

El problema lo tienes en este fichero /home/miguel/.local/bin/hostname, no sé que hay ahí, compruebalo.

antoniosarosi commented 3 years ago

No sé por qué se está ejecutando ese fichero de todos modos. Es un script turyo o es un modulo de Python?

miguelgonrod commented 3 years ago

!/usr/bin/python

EASY-INSTALL-ENTRY-SCRIPT: 'hostname==1.0.1','console_scripts','hostname'

import re import sys import socket

for compatibility with easy_install; see #2198

requires = 'hostname==1.0.1'

try: from importlib.metadata import distribution except ImportError: try: from importlib_metadata import distribution except ImportError: from pkg_resources import load_entry_point

def importlib_load_entry_point(spec, group, name): distname, , _ = spec.partition('==') matches = ( entry_point for entry_point in distribution(dist_name).entry_points if entry_point.group == group and entry_point.name == name ) return next(matches).load()

globals().setdefault('load_entry_point', importlib_load_entry_point)

if name == 'main': sys.argv[0] = re.sub(r'(-script.pyw?|.exe)?$', '', sys.argv[0]) sys.exit(load_entry_point('hostname==1.0.1', 'console_scripts', 'hostname')())

este es el script, y la verdad no lo cree yo, todo eso aparecio cuando instalé el oh my fish

AlphaTechnolog commented 3 years ago

Intenta con esto: python3 -m pip install hostname o pip install hostname o pip3 install hostname o python -m pip install hostname, esto dependiendo de como instalaste python

miguelgonrod commented 3 years ago

Con todas las opciones esto es lo que me dice: Requirement already satisfied: hostname in /usr/lib/python3.9/site-packages (1.0.1)

antoniosarosi commented 3 years ago

Utiliza backticks cuando pegas codigo porque si no te lo interpreta mal y no se puede leer bien. Por ejemplo,

```python # Pega aqui el codigo import re import sys import socket # ... ```

Se renderiza como:

# Pega aqui el codigo
import re
import sys
import socket
# ...

Prueba quitar esta linea de la config de fish:

set -g theme_hide_hostname no

No me suena que eso spawnee un proceso de python para sacar el hostname, pero por probar.

miguelgonrod commented 3 years ago

ya comenté la linea pero igual aparece el error

AlphaTechnolog commented 3 years ago

Al principio me acorde de que existia una aplicacion binaria del sistema que se llama igual hostname en Debian 9, no se en tu OS, pero me pregunte, porque esta dando errores de python, cuando eso es una aplicacion del sistema (binaria), entonces investigando un poco, descubri que existe un paquete de pypi que se llama igual hostname, por lo cual me dispuse a probar:

Ejecute lo siguiente en Debian 9:

python3 -m pip install hostname

Me ha instalado el paquete hostname que es el que dice que ya tienes instalado: Requirement already satisfied: hostname in /usr/lib/python3.9/site-packages (1.0.1), una vez hecho esto, ejecute:

hostname

Y adivina.... Me encontrado el mismo error, solo que un poco mas pequeño, pero a fin de cuentas, es el mismo error:

Traceback (most recent call last):
  File "/home/naypher/.local/bin/hostname", line 5, in <module>
    from hostname import main
ModuleNotFoundError: No module named 'hostname'

Estuve viendo el codigo del script python: hostname, y es este el codigo:

cat $(which hostname) # o para fish:
cat (which hostname) # sin el "$"
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import re
import sys
from hostname import main # esta es la linea que esta dando problema!
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

En la linea numero 5, esta intentando cargar un paquete python llamado, hostname el cual no encuentra, que es lo que dice el error, bueno, no he logrado encontrar el paquete en pypi, necesario para hacer funcionar esto!

Por lo cual, el problema puede ser, que fish esta intentando buscar tu hostname de tu pc, pero debido a que encuentra primero un script de python, llamado hostname (que no funciona (o por lo menos, no lo he logrado hacer funcionar)), asi que lo que puedes hacer es tratar de desinstalar el paquete python hostname, usando una de las tres opciones, basado en el metodo que usaste para instalar python en tu OS:

python3 -m pip uninstall hostname
python -m pip uninstall hostname
pip uninstall hostname
pip3 uninstall hostname

Una vez, has hecho eso, intenta esto:

hostname

Si el output del comando, es:

fish: Unknown command hostname

Puedes intentar instalarlo con el gestor de paquete de tu sistema operativo, he aqui una lista de comandos con lo que lo puedes instalar, dependiendo de tu sistema operativo:

Espero te sirva!

AlphaTechnolog commented 3 years ago

Me di cuenta que de hecho es un error de spacefish, tengo otro usuario en mi pc, que utiliza spacefish, pero claro, to tengo otro tema en mi usuario principal; al instalar la depencia hostname (python3 -m pip install hostname), y reiniciar mi prompt, obtengo el mismo error, intenta desinstalando el hostname (python3 -m pip uninstall hostname), y si aun no funciona porque tu OS, no encuentra el binario de hostname, instalalo con los comandos que te mencione anteriormente.

miguelgonrod commented 3 years ago

ya lo desinstalé y esto es lo que arroja

fish: Unknown command: hostname
~/.local/share/omf/themes/spacefish/functions/__sf_section_host.fish (line 1):
hostname
^
in command substitution
    called on line 35 of file ~/.local/share/omf/themes/spacefish/functions/__sf_section_host.fish
in function '__sf_section_host'
    called on line 1 of file ~/.local/share/omf/themes/spacefish/functions/fish_prompt.fish
in function 'fish_prompt'
in command substitution
~/.local/share/omf/themes/spacefish/functions/__sf_section_host.fish (line 38): Unknown error while evaluating command substitution
            (hostname) \
            ^
in function '__sf_section_host'
    called on line 1 of file ~/.local/share/omf/themes/spacefish/functions/fish_prompt.fish
in function 'fish_prompt'
in command substitution

y al hacer sudo pacman -S hostname arroja esto error: no se ha encontrado el paquete: hostname

antoniosarosi commented 3 years ago

Dónde tienes tu $PATHdefinido? Esta intentando buscar dentro de ~/.local/bin. Ahí está el problema.

antoniosarosi commented 3 years ago

Si tienes un archivo ~/.xsession, ~/.xinit o ~/.xprofile busca una linea como esta:

export PATH=$HOME/.local/bin:$PATH

Quizás se te ha olvidado añadir el $PATH final para concatenarlo.

miguelgonrod commented 3 years ago
export PATH=$HOME/.local/bin:$PATH

así está en .xprofile, es la primer linea

antoniosarosi commented 3 years ago

Primero ejecuta which hostname para ver qué ruta te saca, será la de local bin seguramente. Después intercambialo, es decir:

export PATH=$PATH:$HOME/.local/bin

Cierra sesión y vuelve a iniciarla para que se aplique. Después vuelve a ejecutar which hostname a ver si el path es /usr/bin/hostname y si es así prueba fish.

miguelgonrod commented 3 years ago

sin modificar nada el which hostname saca esto: /usr/bin/hostname

antoniosarosi commented 3 years ago

Hmm, creo que which le da prioridad a las rutas del sistema en vez de las tuyas, intercambialo igualmente para ver si funciona fish.

miguelgonrod commented 3 years ago

sigue sacando esto: /usr/bin/hostname y aun aparece el error

antoniosarosi commented 3 years ago

El mismo error de python?

miguelgonrod commented 3 years ago
Traceback (most recent call last):
  File "/usr/bin/hostname", line 33, in <module>
    sys.exit(load_entry_point('hostname==1.0.1', 'console_scripts', 'hostname')())
  File "/usr/bin/hostname", line 25, in importlib_load_entry_point
    return next(matches).load()
  File "/usr/lib/python3.9/importlib/metadata.py", line 77, in load
    module = import_module(match.group('module'))
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'hostname'

de hecho creo que cambió un poco

miguelgonrod commented 3 years ago

which hostname | xargs file: /usr/bin/hostname: Python script, ASCII text executable

antoniosarosi commented 3 years ago

which hostname | xargs file, te tiene que salir esto:

/usr/bin/hostname: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, ...

Si te sale esto:

/usr/bin/hostname: Python script, ASCII text executable

O esto:

/usr/bin/hostname: symbolic link to /home/usuario/.local/bin/hostname

Entonces has perdido de alguna forma el binario del sistema.

antoniosarosi commented 3 years ago

Vale vale o sea tienes ahi el script de Python tal cual, no se como ha llegado ahi, pero hay que sustituirlo

miguelgonrod commented 3 years ago

si, en /usr/bin está el archivo hostname, con que cosa lo sustituyo?

antoniosarosi commented 3 years ago

Prueba esto:

sudo rm /usr/bin/hostname
sudo pacman -S coreutils
miguelgonrod commented 3 years ago

Ahora si cambió el error:

fish: Unknown command: hostname
~/.local/share/omf/themes/spacefish/functions/__sf_section_host.fish (line 1):
hostname
^
in command substitution
    called on line 35 of file ~/.local/share/omf/themes/spacefish/functions/__sf_section_host.fish
in function '__sf_section_host'
    called on line 1 of file ~/.local/share/omf/themes/spacefish/functions/fish_prompt.fish
in function 'fish_prompt'
in command substitution
~/.local/share/omf/themes/spacefish/functions/__sf_section_host.fish (line 38): Unknown error while evaluating command substitution
            (hostname) \
            ^
in function '__sf_section_host'
    called on line 1 of file ~/.local/share/omf/themes/spacefish/functions/fish_prompt.fish
in function 'fish_prompt'
in command substitution
antoniosarosi commented 3 years ago

Vuelve a ver que saca which hostname | xargs file

miguelgonrod commented 3 years ago
which: no hostname in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/miguel/.local/bin)
Usage: file [-bcCdEhikLlNnprsSvzZ0] [--apple] [--extension] [--mime-encoding]
            [--mime-type] [-e <testname>] [-F <separator>]  [-f <namefile>]
            [-m <magicfiles>] [-P <parameter=value>] [--exclude-quiet]
            <file> ...
       file -C [-m <magicfiles>]
       file [--help]
antoniosarosi commented 3 years ago

file /bin/hostname

miguelgonrod commented 3 years ago

/bin/hostname: cannot open `/bin/hostname' (No such file or directory)

antoniosarosi commented 3 years ago

Hostia qué raro, un momento, te subo a Github el binario y te lo copias xd.

miguelgonrod commented 3 years ago

gracias jajaja

antoniosarosi commented 3 years ago

https://github.com/antoniosarosi/dotfiles/raw/bin/hostname Descarga esto en una carpeta y copialo a /usr/bin,

sudo cp hostname /usr/bin/hostname
sudo cp hostname /bin/hostname
antoniosarosi commented 3 years ago

Después ejecuta el comando hostname a ver si va antes de probar fish

miguelgonrod commented 3 years ago

fish: Unknown command: hostname

antoniosarosi commented 3 years ago

prueba con /usr/bin/hostname, ejecutalo solo para ver si va

miguelgonrod commented 3 years ago

creo que no funcionó porque no le di permisos de ejecución

antoniosarosi commented 3 years ago

sudo chmod 755 /usr/bin/hostname

miguelgonrod commented 3 years ago

Muchas gracias, eso solucionó el error, y gracias por regalarme de tu tiempo para solucionar este error