Ubuntu non riesce a trovare un file eseguibile in ~ / .local / bin


12
after installation with

pip3 install --user steem-piston
you will get a new executable piston installed in ~/.local/bin

Ho installato lo strumento usando pip install, ma non riesco a trovare il file eseguibile.

Non sono del tutto sicuro di capire cos'è questa directory: ~ / .local / bin.

È solo root / local / bin?

Risposte:


11

~/è un'abbreviazione di shell per la cartella principale, in genere /home/USERNAME/, dove si USERNAMEtrova il nome dell'utente. È lo stesso di$HOME

~/.local/binè una sottocartella denominata binnella sottocartella indicata .localnella cartella principale.

Puoi usare

~/.local/bin/pip3

per chiamare il tuo nuovo pip3eseguibile. Potrebbe essere più facile aggiungere ~/.local/binalla $PATHvariabile d'ambiente, vedi Come aggiungere una directory al mio percorso? quindi non è necessario digitare ~/.local/bin/sempre.

Assicurati di aggiungerlo prima del vecchio valore di $PATH, come

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

Grazie per il tuo post. Sfortunatamente, non riesco a vedere la sottocartella nella cartella home (è un file nascosto?). E quando digito quel comando nel terminale ottengo: bash: /home/myname/.local/bin/pip3: nessun file o directory
simile

Sì, se il nome di un file o di una cartella inizia con un punto, è nascosto per impostazione predefinita. Puoi usare anche ls -aper lsvisualizzare file e cartelle nascosti.
Florian Diesch,

@TabulaSmaragdina È strano che il file non sia stato trovato. Prova a correre ls -a ~/.local/bin. Se l'output è lungo, modificalo nella tua domanda.
wjandrea,

1
Non intendi ~/.local/bin/piston?
terdon,

Nota: ~/.local/bin/è già in $ PATH sul moderno Ubuntu.
Aaron Franke,

7

~/.local/binè stato aggiunto al PERCORSO in Ubuntu 16.10 e eseguito il backport su 16.04. Vedi https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562

Se stai eseguendo Ubuntu> = 16.04 con tutti gli aggiornamenti, dovrebbe già andare bene. In caso contrario, puoi aggiungerlo manualmente:

Per un singolo utente, modifica il file ~/.profilee aggiungi alla fine:

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

Se vuoi che qualsiasi utente appena creato abbia questo, puoi aggiungere questa stessa riga alla fine di /etc/skel/.profile


0

Lo stavo facendo oggi, sembra che una documentazione chiara sia scarsa per le persone che vogliono mantenere un certo controllo su ciò che è installato e su dove.

Supponendo che tu abbia eseguito pip3 install qualunque, per impostazione predefinita metti roba in ~ / .local, come sai. È consuetudine in Unix dividere i tipi di file, mettere quelli "eseguibili" in ~ / .local / bin.

In un terminale, digita questo per vedere ora il tuo percorso:

$ echo $PATH

Controlla di avere le cose di Python installate in ~ / .local

$ ls -la ~/.local/bin

Ciò conferma che i file eseguibili ci sono o lo fanno per me. Se i permessi dei file mostrano "x" sono eseguibili.

Ora, aggiungi quella directory al percorso all'interno del terminale

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

Controlla di nuovo il tuo percorso per vedere il cambiamento. Ricorda che si tratta di un'impostazione temporanea solo per quella sessione terminale. Non si applica ad altri terminali contemporaneamente o in futuro. È un buon posto per testare le cose.

Successivamente, ogni programma eseguibile all'interno di ~ / .local / bin dovrebbe essere eseguito se si digita il suo nome nella riga di comando. Non è necessario eseguire "~ / .local / bin / jupyter", ad esempio. Digita "jupyter". Non è necessario il "./" che vedi a volte, è quando avvii un programma dalla directory di lavoro che non si trova nel percorso.

Se in seguito decidi di renderlo permanente, in modo che ~ / .local / bin sia sempre nel tuo PERCORSO, puoi farlo modificando alcuni file di configurazione dell'ambiente. A seconda della configurazione, ad esempio, nel file ".bashrc" della mia cartella home, l'ultima riga è "export PATH = $ PATH: $ HOME / bin". Quindi potrei mettere $ HOME / local / bin in primo piano. Nota ho scritto $ HOME, non "~" lì dentro. Quindi ogni volta che utilizzo una shell BASH, il PATH viene corretto. Se potessi usare altre shell, penso che la cosa giusta sia invece modificare il ~ / .profile. Penso che tutte le shell in Ubuntu forniranno quel file.

Nel mio caso, ho installato diversi programmi con pip3, come jupyter. Un modo per accertarsi di dove è stato installato è quello di eseguire

$ pip3 list

mostra tutti i pacchetti disponibili, non solo quelli installati da pip3.

$ pip3 show jupyter

Nel mio caso, ad esempio:

---
Metadata-Version: 2.0
Name: jupyter
Version: 1.0.0
Summary: Jupyter metapackage. Install all the Jupyter components in one go.
Home-page: http://jupyter.org
Author: Jupyter Development Team
Author-email: jupyter@googlegroups.org
Installer: pip
License: BSD
Location: /home/pauljohn/.local/lib/python3.5/site-packages
Requires: nbconvert, ipykernel, ipywidgets, notebook, jupyter-console, qtconsole
Classifiers:
  Intended Audience :: Developers
  Intended Audience :: System Administrators
  Intended Audience :: Science/Research
  License :: OSI Approved :: BSD License
  Programming Language :: Python
  Programming Language :: Python :: 2
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3
  Programming Language :: Python :: 3.3
  Programming Language :: Python :: 3.4

Non voglio che suoni come una fiamma, ma può sembrare un attacco. Ti avvertirei di non seguire con entusiasmo i consigli che alcune persone qui offriranno, di eseguire "sudo pip3 xxx". In generale, si preferirebbero eseguire le installazioni root solo con i pacchetti Debian, non con pip3. Se corri senza sudo, stai limitando il pericolo per l'account utente. Se perdi mentre esegui uno script come root, potresti spargere i file su tutto il tuo disco rigido e pentirti. Soprattutto se altre persone accedono e usano quel computer, evita di fare qualsiasi cosa come root se non sei sicuro.

Vale anche la pena notare che per impostazione predefinita pip3 viene installato in ~ / .local, ma ciò non è necessario. Leggi "man pip3", cerca "-t" (--target). È possibile specificare la directory di installazione. Penso che sia bello perché puoi limitare qualsiasi danno a un'altra directory ed eliminarlo quando vuoi. ~ / .local potrebbe avere altre cose preziose installate da altri programmi e tu preferiresti non cancellarle. Penso a ~ / .local come a un posto più per le impostazioni che per i programmi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.