O Ubuntu não consegue encontrar um arquivo executável em ~ / .local / bin

12
after installation with

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

Eu instalei a ferramenta usando a instalação do pip, mas não consigo encontrar o arquivo executável.

Não sei ao certo o que é esse diretório: ~ / .local / bin.

É apenas root / local / bin?

TabulaSmaragdina
fonte

Respostas:

11

~/é uma abreviação de shell para sua pasta pessoal, geralmente /home/USERNAME/onde USERNAMEestá o nome do seu usuário. É o mesmo que$HOME

~/.local/biné uma subpasta nomeada binna subpasta nomeada .localna sua pasta pessoal.

Você pode usar

~/.local/bin/pip3

para chamar seu novo pip3executável. Pode ser mais fácil adicionar ~/.local/binà $PATHvariável de ambiente, consulte Como adicionar um diretório ao meu caminho? então você não precisa digitar ~/.local/bin/o tempo todo.

Adicione-o antes do valor antigo de $PATH, como

PATH="$HOME/.local/bin/:$PATH"
Florian Diesch
fonte
Obrigado pelo seu post. Infelizmente, não consigo ver a subpasta na pasta pessoal (é um arquivo oculto?). E quando eu digito esse comando no get terminal de I: bash: /home/myname/.local/bin/pip3: tal arquivo Não ou diretório
TabulaSmaragdina
Sim, se o nome de um arquivo ou pasta começar com um ponto, ele ficará oculto por padrão. Você pode usar ls -apara ter lsarquivos e pastas de exibição oculta, também.
Florian Diesch
@TabulaSmaragdina É estranho que o arquivo não seja encontrado. Tente correr ls -a ~/.local/bin. Se a saída for longa, edite-a na sua pergunta.
Wjandrea
1
Você não quer dizer ~/.local/bin/piston?
terdon
Nota: ~/.local/bin/já está em $ PATH no Ubuntu moderno.
precisa saber é o seguinte
7

~/.local/binfoi adicionado ao PATH no Ubuntu 16.10 e portado para 16.04. Veja https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562

Se você estiver executando o Ubuntu> = 16.04 com todas as atualizações, ele já deve estar bem. Caso contrário, você pode adicioná-lo manualmente:

Para um único usuário, edite o arquivo ~/.profilee adicione no final:

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

Se você quiser que um usuário recém-criado tenha isso, poderá adicionar esta mesma linha no final de /etc/skel/.profile

Mossroy
fonte
0

Eu estava fazendo isso hoje, parece que a documentação clara é escassa para as pessoas que desejam manter algum controle sobre o que está instalado e onde.

Supondo que você tenha executado o pip3, instale o que for, o padrão é colocar as coisas em ~ / .local, como você sabe. É habitual no Unix dividir os tipos de arquivo, coloque os "executáveis" em ~ / .local / bin.

Em um terminal, digite isto para ver seu caminho agora:

$ echo $PATH

Verifique se você tem o material python instalado em ~ / .local

$ ls -la ~/.local/bin

Isso confirma que os arquivos executáveis ​​estão lá ou faz por mim. Se essas permissões de arquivo mostrarem "x", elas serão executáveis.

Agora, adicione esse diretório ao caminho dentro do terminal

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

Verifique seu caminho novamente para ver a mudança. Lembre-se de que é uma configuração temporária apenas para essa sessão do terminal. Não se aplica a outros terminais ao mesmo tempo ou no futuro. É um bom lugar para testar as coisas.

Depois disso, todo programa executável em ~ / .local / bin deve ser executado se você digitar seu nome na linha de comando. Não há necessidade de executar "~ / .local / bin / jupyter", por exemplo. Basta digitar "jupyter". Não é necessário o "./" que você vê às vezes, é quando você inicia um programa a partir do diretório de trabalho que não está no caminho.

Se, posteriormente, você decidir que deseja tornar isso permanente, para que ~ / .local / bin esteja sempre em seu PATH, você poderá fazer isso editando alguns arquivos de configuração do ambiente. Dependendo da sua configuração, por exemplo, no meu arquivo ".bashrc" da pasta pessoal, a última linha é "export PATH = $ PATH: $ HOME / bin". Então eu poderia colocar $ HOME / local / bin na frente disso. Note que escrevi $ HOME, não "~" lá. Então, toda vez que eu uso um shell BASH, PATH seria corrigido. Se você pode usar outros shells, acho que a coisa certa é editar o ~ / .profile. Eu acho que todas as conchas no Ubuntu irão obter esse arquivo.

No meu caso, instalei vários programas com o pip3, como o jupyter. Uma maneira de garantir onde foi instalado é executar

$ pip3 list

mostra todos os pacotes disponíveis, não apenas os instalados pelo pip3.

$ pip3 show jupyter

No meu caso, por exemplo:

---
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

Não quero que isso pareça uma chama, mas pode parecer um ataque. Eu o advertiria a não seguir avidamente o conselho que algumas pessoas aqui oferecerão, para executar o "sudo pip3 xxx". Geralmente, você prefere executar instalações raiz apenas com pacotes Debian, não com pip3. Se você executar sem o sudo, estará limitando o perigo à conta do usuário. Se você estiver executando um script como root, poderá espalhar arquivos por todo o disco rígido e se arrepender. Especialmente se outras pessoas fizerem login e usarem o computador, evite fazer qualquer coisa como root, a menos que esteja confiante.

Também vale a pena notar que o padrão do pip3 é instalado no ~ / .local, mas isso não é necessário. Leia "man pip3", procure por "-t" (--target). Você pode especificar o diretório de instalação. Eu acho que isso é legal porque você pode limitar qualquer dano a outro diretório e excluí-lo quando quiser. ~ / .local pode ter outras coisas valiosas instaladas por outros programas e você prefere não apagá-las. Penso em ~ / .local como um lugar mais para configurações do que para programas de qualquer maneira.

pauljohn32
fonte