分享一个有关路径设置的低级错误

2020-08-16 19:10:35 +08:00
 jackmod

刚刚遇到了一个比较低级的错误,一时没反应过来。现把解决的过程简单分享一下。

问题

执行一个 python 的脚本,提示找不到模块。

环境条件

  1. ubuntu 20.04 。
  2. 机器很久没有重装,也没有特别大的改动。
  3. 期间没有卸载过任何依赖包。
  4. 依赖包来自 apt 。LTS 仓库稳定,突然不能跑的概率较低。

表现

执行之前有效的脚本,突然提示找不到模块。使用 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 所指向的目录里添加符号链接。

1413 次点击
所在节点    Linux
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/698746

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX