Ubuntu 在 ~/.local/bin 中找不到可执行文件

Ubuntu 在 ~/.local/bin 中找不到可执行文件
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 吗?

答案1

~/是您的主文件夹的 shell 缩写,通常是/home/USERNAME/,其中USERNAME是您的用户名。它与$HOME

~/.local/bin是您的主文件bin夹中命名的子文件夹.local中的子文件夹。

您可以使用

~/.local/bin/pip3

调用新的可执行文件。添加到环境变量中pip3可能更容易,请参阅~/.local/bin$PATH如何将目录添加到我的路径?所以您不需要~/.local/bin/一直打字。

确保添加它的旧值$PATH,例如

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

答案2

~/.local/bin已添加到 Ubuntu 16.10 的 PATH 中,并反向移植到 16.04。请参阅https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562

如果你运行的是 Ubuntu >=16.04 并安装了所有更新,那么应该已经没问题了。如果没有,你可以手动添加:

对于单个用户,编辑文件~/.profile,并在其末尾添加:

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

如果你希望任何新创建的用户都拥有此功能,你可以在末尾添加相同的行/etc/skel/.profile

答案3

我今天刚刚这样做,对于想要控制安装内容和安装位置的人来说,似乎缺乏清晰的文档。

假设您已经运行了 pip3 install whatever,它默认将内容放在 ~/.local 下,如您所知。Unix 习惯将文件类型分开,将“可运行”的文件放在 ~/.local/bin 下。

在终端中,输入以下命令来查看您的路径:

$ echo $PATH

检查 ~/.local 中是否安装了 Python 文件

$ 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 shell 时,PATH 都会被修复。如果您可能使用其他 shell,我认为正确的做法是编辑 ~/.profile。我认为 Ubuntu 中的所有 shell 都会获取该文件。

在我的例子中,我使用 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: [email protected]
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 软件包运行 root 安装,而不是使用 pip3。如果你在不使用 sudo 的情况下运行,那么危险就局限于用户帐户。如果你在以 root 身份运行脚本时犯了错误,你可能会将文件散落在硬盘各处,然后后悔莫及。特别是如果其他人登录并使用该计算机,除非你很有信心,否则请避免以 root 身份执行任何操作。

还值得注意的是,pip3 默认安装到 ~/.local,但这不是必需的。阅读“man pip3”,查找“-t”(--target)。您可以指定安装目录。我认为这很好,因为您可以将任何损坏限制在另一个目录中,并在需要时将其删除。~/.local 中可能还有其他程序安装的有价值的东西,您不想消灭它们。无论如何,我认为 ~/.local 更像是一个设置的地方,而不是程序的地方。

相关内容