技术解析
刚刚遇到了一个比较低级的错误,一时没反应过来。现把解决的过程简单分享一下。
执行一个 python 的脚本,提示找不到模块。
执行之前有效的脚本,突然提示找不到模块。使用 pip 安装,提示路径不可写。提示的路径是 flexget 或 youtube-dl 的路径(视 $PATH 中的顺序)。
输入 which pip3
命令,发现 pip 在 flexget/bin 里。继续使用 which python3
检查,它也在 flexget/bin 里。
在 python 中打印 sys.path
,与另一用户的结果不同,且包含 flexget/bin 的内容。
此时回想前几天的操作可知。先前模仿安装 flexget 的方法,为机器安装了最新的 youtube-dl 。之后为了图方便,把二者的 bin 目录加入了 $PATH 里。
去掉 $PATH 中后来增加的内容,重新检查后,一切恢复正常。
在 ~/.local/bin
中建立 flexget 和 youtube-dl 的符号链接来实现相同目的。
遇到类似奇怪的问题,先执行 which
命令,看看到底是不是自己想要运行的程序。如果是路径的问题,修正路径后,问题可能就解决了。
另外,通过 python3 -m venv
独立安装的软件,如果需要快速调用,不应直接添加 $PATH
,而是在已有的 $PATH 所指向的目录里添加符号链接。