Ubuntu не может найти исполняемый файл в ~ / .local / bin

12
after installation with

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

Я установил инструмент с помощью pip install, но не могу найти исполняемый файл.

Я не совсем уверен, что понимаю, что это за каталог: ~ / .local / bin.

Это просто root / local / bin?

TabulaSmaragdina
источник

Ответы:

11

~/это оболочка аббревиатурой для вашей домашней папки, как правило /home/USERNAME/, где USERNAMEэто имя вашего пользователя. Это так же, как$HOME

~/.local/binявляется подпапкой, названной binв подпапке с именем .localв вашей домашней папке.

Ты можешь использовать

~/.local/bin/pip3

вызвать ваш новый pip3исполняемый файл. Это может быть проще , чтобы добавить ~/.local/binк $PATHпеременной окружения см Как добавить каталог в моем пути? поэтому вам не нужно вводить ~/.local/bin/все время.

Убедитесь, что вы добавили его до старого значения $PATH, например

PATH="$HOME/.local/bin/:$PATH"
Флориан Диш
источник
Спасибо за ваше сообщение. К сожалению, я не вижу подпапку в домашней папке (это скрытый файл?). И когда я набираю эту команду в терминале, я получаю: bash: /home/myname/.local/bin/pip3: Нет такого файла или каталога
TabulaSmaragdina
Да, если имя файла или папки начинается с точки, по умолчанию оно скрыто. Вы можете использовать , ls -aчтобы lsотобразить скрытые файлы и папки тоже.
Флориан Диш
@TabulaSmaragdina Странно, что файл не найден. Попробуйте запустить ls -a ~/.local/bin. Если вывод длинный, отредактируйте его в своем вопросе.
wjandrea
1
Ты имеешь в виду ~/.local/bin/piston?
тердон
Примечание: ~/.local/bin/уже есть в $ PATH на современной Ubuntu.
Аарон Франке
7

~/.local/binбыл добавлен в PATH в Ubuntu 16.10 и перенесен на 16.04. См. Https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562.

Если вы используете Ubuntu> = 16.04 со всеми обновлениями, все должно быть в порядке. Если нет, вы можете добавить его вручную:

Для одного пользователя отредактируйте файл ~/.profileи добавьте в его конец:

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

Если вы хотите, чтобы это было у любого вновь созданного пользователя, вы можете добавить эту же строку в конце /etc/skel/.profile

Mossroy
источник
0

Я только делал это сегодня, кажется, что ясная документация недостаточна для людей, которые хотят сохранить некоторый контроль над тем, что установлено и где.

Предположим, что вы запустили установку pip3, по умолчанию она помещается в ~ / .local, как вы знаете. В Unix принято разделять типы файлов, помещая «запускаемые» в ~ / .local / bin.

В терминале введите это, чтобы увидеть ваш путь сейчас:

$ echo $PATH

Убедитесь, что у вас есть установленный питон в ~ / .local

$ ls -la ~/.local/bin

Это подтверждает, что исполняемые файлы есть или есть для меня. Если эти права доступа к файлам показывают «x», они исполняемые.

Теперь добавьте этот каталог к ​​пути в терминале

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

Проверьте свой путь еще раз, чтобы увидеть изменения. Пожалуйста, помните, что это временная настройка только для этой терминальной сессии. Это не относится к другим терминалам одновременно или в будущем. Это хорошее место для тестирования вещей.

После этого каждая исполняемая программа в ~ / .local / bin должна запускаться, если вы введете ее имя в командной строке. Например, нет необходимости запускать «~ / .local / bin / jupyter». Просто введите "Jupyter". Нет необходимости в «./», который вы иногда видите, это когда вы запускаете программу из рабочего каталога, который не находится в пути.

Если позже вы решите сделать это постоянным, чтобы ~ / .local / bin всегда был в вашей переменной PATH, вы можете сделать это, отредактировав некоторые файлы конфигурации среды. В зависимости от вашей настройки, например, в файле моей домашней папки «.bashrc», последняя строка «export PATH = $ PATH: $ HOME / bin». Так что я мог бы поместить $ HOME / local / bin в начало этого списка. Заметьте, я выписал $ HOME, а не "~". Тогда каждый раз, когда я использую оболочку BASH, PATH будет исправлен. Если вы можете использовать другие оболочки, я думаю, что правильнее всего отредактировать ~ / .profile. Я думаю, что все оболочки в Ubuntu будут источником этого файла.

В моем случае я установил несколько программ с pip3, таких как jupyter. Один из способов убедиться, где это было установлено, - запустить

$ pip3 list

показывает все доступные пакеты, а не только установленные pip3.

$ pip3 show jupyter

В моем случае, например:

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

Я не хочу, чтобы это звучало как пламя, но это может выглядеть как атака. Я бы предупредил вас не охотно следовать советам, которые некоторые люди здесь предложат, для запуска "sudo pip3 xxx". Как правило, вы предпочитаете выполнять установки root только с пакетами Debian, а не с pip3. Если вы запускаете без sudo, вы ограничиваете опасность для учетной записи пользователя. Если вы запустили скрипт от имени root, вы можете разбросать файлы по всему жесткому диску и пожалеть об этом. Особенно, если другие пользователи входят в систему и используют этот компьютер, избегайте делать что-либо как root, если вы не уверены.

Также стоит отметить, что pip3 по умолчанию устанавливается в ~ / .local, но это не обязательно. Прочитайте "man pip3", найдите "-t" (--target). Вы можете указать каталог установки. Я думаю, что это хорошо, потому что вы можете ограничить любой ущерб одним каталогом и удалить его, когда захотите. ~ / .local может содержать в себе другие ценные вещи, установленные другими программами, и вы не захотите их уничтожать. В любом случае, я думаю о ~ / .local как о месте, где больше настроек, чем программ.

pauljohn32
источник