Closed miguelgonrod closed 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
?
set fish_greeting ""
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"
set -g theme_display_user yes set -g theme_hide_hostname no set -g color_user_bg magenta set -g color_user_str black
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
El problema lo tienes en este fichero /home/miguel/.local/bin/hostname
, no sé que hay ahí, compruebalo.
No sé por qué se está ejecutando ese fichero de todos modos. Es un script turyo o es un modulo de Python?
import re import sys import socket
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
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
Con todas las opciones esto es lo que me dice: Requirement already satisfied: hostname in /usr/lib/python3.9/site-packages (1.0.1)
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.
ya comenté la linea pero igual aparece el error
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:
sudo apt-get install hostname
sudo apt-get install hostname
sudo pacman -S hostname
sudo apt-get install hostname
sudo yum install hostname
sudo dnf install hostname
sudo apt-get install hostname
Espero te sirva!
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.
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
Dónde tienes tu $PATH
definido? Esta intentando buscar dentro de ~/.local/bin
. Ahí está el problema.
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.
export PATH=$HOME/.local/bin:$PATH
así está en .xprofile, es la primer linea
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.
sin modificar nada el which hostname saca esto: /usr/bin/hostname
Hmm, creo que which
le da prioridad a las rutas del sistema en vez de las tuyas, intercambialo igualmente para ver si funciona fish.
sigue sacando esto: /usr/bin/hostname y aun aparece el error
El mismo error de python?
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
which hostname | xargs file: /usr/bin/hostname: Python script, ASCII text executable
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.
Vale vale o sea tienes ahi el script de Python tal cual, no se como ha llegado ahi, pero hay que sustituirlo
si, en /usr/bin está el archivo hostname, con que cosa lo sustituyo?
Prueba esto:
sudo rm /usr/bin/hostname
sudo pacman -S coreutils
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
Vuelve a ver que saca which hostname | xargs file
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]
file /bin/hostname
/bin/hostname: cannot open `/bin/hostname' (No such file or directory)
Hostia qué raro, un momento, te subo a Github el binario y te lo copias xd.
gracias jajaja
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
Después ejecuta el comando hostname
a ver si va antes de probar fish
fish: Unknown command: hostname
prueba con /usr/bin/hostname
, ejecutalo solo para ver si va
creo que no funcionó porque no le di permisos de ejecución
sudo chmod 755 /usr/bin/hostname
Muchas gracias, eso solucionó el error, y gracias por regalarme de tu tiempo para solucionar este error
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?