2

我最近安装了 pyenv,以便在每个项目的基础上在几个相互竞争的 python 解释器之间切换。因此,python setup.py developconsole_script入口点放置在~/.pyenv/versions/3.4.3/bin. 但是,从命令行调用这些脚本之一(例如:) $ my_entry_point_script会导致错误:找不到命令。

我该如何解决这个问题?这是$PATH, $PTHONPATH, 其他问题吗?作为参考,我的 shell (fish)status --is-interactive; and . (pyenv init -lpsub)在启动时执行。

编辑: 正确的解决方案将保持不同版本的 python 之间的干净分离。

4

2 回答 2

4

要使二进制文件工作,您需要运行

pyenv rehash

来自 pyenv 帮助

pyenv rehash - Rehash pyenv shims (run this after installing executables)
于 2016-12-28T00:24:54.580 回答
0

你需要告诉你的shell(可能是bash?)在哪里寻找可执行程序。您可以在命令行上执行此操作(或将其写入您的.bashrc以使其永久化):

PATH=/new/path:"${PATH}"

更新:fish这将是:

set PATH /new/path $PATH

并使其永久化:在其中编辑~/.config/fish/config.fish并写入上面的行。

这样 bash/fish 将在系统中的虚拟环境之前找到您的虚拟环境中的 python。你真的想要那个吗?

警告:这会带来一个安全问题(取决于谁对您的 virtual-env 目录具有写访问权限;其中的恶意版本ls或其他命令可能会破坏您的系统)。

或者 - 与往常一样 - 您可以使用完整路径在其中调用您的程序。

于 2015-09-06T10:43:35.133 回答