我已经全新安装了 18.04 LTS。然后我使用以下方法安装了 youtube-dl
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
当我尝试使用 youtube-dl 时,收到以下错误消息:
rudolffischer@HP8770w:~$ youtube-dl -U
/usr/bin/env: ‘python’: No such file or directory
Python 3 似乎已安装
rudolffischer@HP8770w:~$ python3
Python 3.6.5 (default, Apr 1 2018, 05:46:30)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
为什么?
答案1
使用版本 2019.06.08Ubuntu 18.04.2 LTS
后youtube-dl
,使用以下命令创建符号链接:
$ sudo ln -s /usr/bin/python3 /usr/local/bin/python
youtube-dl 正常工作,错误"/usr/bin/env: ‘python’: No such file or directory"
消失。
答案2
你应该能够通过执行以下操作使用你的 Python 版本运行 youtube-dl:
/your/path/python3 /usr/local/bin/youtube-dl
通过执行以下操作找出你的 python3 路径which python3
答案3
可以使用以下命令从所有当前支持的 Ubuntu 版本中的默认存储库安装 youtube-dl:
sudo apt install youtube-dl
在基于 Debian 的操作系统上,youtube-dl 的自我更新机制被禁用,但 youtube-dl snap 包除外,它会自动更新。您也可以通过使用 pip 安装 youtube-dl 将 youtube-dl 更新到最新版本。
sudo snap 安装 youtube-dl# 使用 snap run youtube-dl 启动它
或者
sudo apt remove youtube-dl
sudo apt install python3-pip
python3 -m pip install youtube-dl
答案4
youtube-dl 脚本的头部有#!/usr/bin/env python
,表示它使用“python”命令。
每https://www.python.org/dev/peps/pep-0394/ 发行版可以选择包含与 python2 或 python3 相关的 python 命令,根本不包含该命令,或者允许用户/管理员对其进行配置。
在基于 debian 的安装中,有 3 个主要的 python 包:
- Python (
sudo apt install python
) - python2(
sudo apt install python2
) - python3(
sudo apt install python3
)
“python”包安装python版本2并包含“python”命令(符号链接/usr/bin/python -> /usr/bin/python2)。
“python2”和“python3”包不提供“python”命令。这意味着从 CLI 或脚本调用“python”将导致“未找到命令”错误。
如果您正在使用这些,您必须:
- 使用你喜欢的版本调用脚本(
python2 /usr/local/bin/youtube-dl
或python3 /usr/local/bin/youtube-dl
)[就我个人而言,我alias youtube-dl='python3 /usr/local/bin/youtube-dl'
在我的.bash_aliases中有] - 编辑 youtube-dl 脚本以使用 python2 或 python3 (
sudo sed -i '1s/python/python2/' /usr/local/bin/youtube-dl
) 或 (sudo sed -i '1s/python/python3/' /usr/local/bin/youtube-dl
)
在上面,我更喜欢使用别名选项,因为这样你就可以保留文件,而不必在每次文件更新时都对其进行编辑
也可以通过为 /usr/bin/python 创建符号链接来修复此问题,但不建议这样做。