V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
jackmod
V2EX  ›  Linux

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

  •  
  •   jackmod · 2020-08-16 19:10:35 +08:00 · 1381 次点击
    这是一个创建于 1320 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    问题

    执行一个 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 所指向的目录里添加符号链接。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1135 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 22:57 · PVG 06:57 · LAX 15:57 · JFK 18:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.