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?

Відповіді:


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


0

Я щойно робив це сьогодні, здається, що чітка документація обмежена для людей, які хочуть тримати деякий контроль над тим, що встановлено та де.

Припустимо, ви запустили pip3 інсталювати що завгодно, він за замовчуванням ставить речі під ~ / .local, як ви знаєте. У Unix прийнято ділити типи файлів, класти "зруйновані" під ~ / .local / bin.

У терміналі введіть це, щоб зараз побачити шлях:

$ echo $PATH

Перевірте, чи є у вас встановлені речі python в ~ / .local

$ ls -la ~/.local/bin

Це підтверджує, що виконувані файли є чи є для мене. Якщо в цих дозволах на файл є "x", вони виконуються.

Тепер додайте цей каталог у шлях до терміналу

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

Ще раз перевірте свій шлях, щоб побачити зміни. Пам'ятайте, що це тимчасова установка лише для цього термінального сеансу. Це не стосується інших терміналів одночасно або в майбутньому. Це гарне місце для тестування речей.

Після цього кожна програма, що виконується в ~ / .local / bin, повинна запускатися, якщо ви введете її ім'я в командному рядку. Не потрібно, наприклад, запускати "~ / .local / bin / jupyter". Просто введіть "юпітер". Немає потреби в "./", яку ви бачите іноді, саме тоді ви запускаєте програму з робочого каталогу, який не стоїть на шляху.

Якщо ви згодом вирішите, що хочете зробити це постійним, щоб ~ / .local / bin завжди був у вашому PATH, ви можете це зробити, відредагувавши деякі конфігураційні файли середовища. Залежно від вашого налаштування, наприклад, у моїй домашній папці ".bashrc", останній рядок - "експортувати 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". Як правило, ви скоріше запускаєте кореневі встановлення лише з пакетами Debian, а не з pip3. Якщо ви біжите без судо, ви обмежуєте небезпеку для облікового запису користувача. Якщо ви під час запуску сценарію як корінь ходите, ви можете розкидати файли по всьому жорсткому диску і пошкодувати про це. Особливо, якщо інші люди входять у систему та користуються цим комп’ютером, уникайте нічого в якості кореня, якщо ви не впевнені.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.