为什么〜/ .pyenv / versions / * / bin中的脚本不能从命令行调用?

时间:2015-09-06 10:37:30

标签: python setuptools pyenv

我最近安装了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之间保持清晰的分离。

2 个答案:

答案 0 :(得分:0)

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

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

更新:在fish中,这将是:

set PATH /new/path $PATH

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

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

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

或 - 一如既往 - 您可以使用完整路径调用您的程序。

答案 1 :(得分:0)

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

pyenv rehash

来自pyenv帮助

pyenv rehash - Rehash pyenv shims (run this after installing executables)