运行诗歌失败, /usr/bin/env: 'python': No such file or directory

Har*_*oli 2 python python-poetry ubuntu-20.04

我刚刚使用以下安装脚本安装了诗歌

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3
Run Code Online (Sandbox Code Playgroud)

但是,当我执行诗歌时,它失败并出现以下错误

$ poetry
/usr/bin/env: ‘python’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我最近升级到 ubuntu 20.04,这是升级的问题还是诗歌的问题?

mig*_*ike 9

对于 Mac 用户

运行这个:

ls -l /usr/local/bin/python*
Run Code Online (Sandbox Code Playgroud)

你应该得到这样的东西:

lrwxr-xr-x  1 irfan  admin  34 Nov 11 16:32 /usr/local/bin/python3 -> ../Cellar/python/3.7.5/bin/python3
lrwxr-xr-x  1 irfan  admin  41 Nov 11 16:32 /usr/local/bin/python3-config -> ../Cellar/python/3.7.5/bin/python3-config
lrwxr-xr-x  1 irfan  admin  36 Nov 11 16:32 /usr/local/bin/python3.7 -> ../Cellar/python/3.7.5/bin/python3.7
lrwxr-xr-x  1 irfan  admin  43 Nov 11 16:32 /usr/local/bin/python3.7-config -> ../Cellar/python/3.7.5/bin/python3.7-config
lrwxr-xr-x  1 irfan  admin  37 Nov 11 16:32 /usr/local/bin/python3.7m -> ../Cellar/python/3.7.5/bin/python3.7m
lrwxr-xr-x  1 irfan  admin  44 Nov 11 16:32 /usr/local/bin/python3.7m-config -> ../Cellar/python/3.7.5/bin/python3.7m-config
Run Code Online (Sandbox Code Playgroud)

将默认的 python 符号链接更改为您要从上面使用的版本。注意,我们只需要选择以python3.*结尾的即可。请避免使用以 config 或 python3.*m 或 python3.*m-config 结尾的内容。

运行这个:

ln -s -f /usr/local/bin/python3.7 /usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)

检查它是否正常工作:

python --version # Should output Python 3.7.5
Run Code Online (Sandbox Code Playgroud)


Har*_*oli 6

python除非另有说明,否则诗歌取决于任何东西,并且不会尝试使用特定版本的python。

上述问题将存在于 20.04 以后的 ubuntu 系统上,因为不推荐使用 python2.7 并且该python命令未映射到 python3.x

你会发现为 python 指定一个别名到 python3 是行不通的(除非你在你的 bashrc 而不是任何其他 shell 运行命令文件中指定这个),因为诗歌旋转它自己的 shell 来执行命令。

改为安装以下软件包

sudo apt install python-is-python3
Run Code Online (Sandbox Code Playgroud)

应该注意的是,如果您愿意,您可以安装 python2.7,并且诗歌应该可以正常运行。

  • 在下一版本中,诗歌安装程序将向 shebang 添加可用的 python 解释器。请参阅此[合并 PR](https://github.com/python-poetry/poetry/pull/1878)。对我来说,没有“python”可执行文件的系统就已经损坏了。但遗憾的是 [PEP394](https://www.python.org/dev/peps/pep-0394/) 允许这样做,所以我们必须注意它。 (2认同)

And*_*rds 5

还有一些其他 Ubuntu 版本/变体的问题(此处为 Mint 19.3)。

答案python-is-python3arshbot一个很好的选择,或者我发现只需调整调用诗歌的脚本就可以为我修复它:一种更微妙的方法,但也更脆弱,以防脚本将来更新(因此被覆盖)。所以无论如何,这是轻量级/脆弱的选项:

编辑脚本,

vi ~/.poetry/bin/poetry
Run Code Online (Sandbox Code Playgroud)

(其他编辑器可用等)并更改顶行:

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

变成

#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)

已排序!

考虑到 的评论,这可能只是作为临时解决方法需要finswimmer,从该评论看来,未来在这种情况下,诗歌将更加明智地使用 python3。

  • 仍在使用这个,所以我想这并不像看起来那么暂时。 (3认同)