首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
宝塔
V2EX  ›  问与答

macOS 下 Python lxml 库安装后依然运行 “ No module named 'lxml' ”

  •  
  •   leverestfish · 68 天前 · 1012 次点击
    这是一个创建于 68 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自闭了,求助,如图所示

    macOS python3,在终端用 pip3 命令装的,装完之后 import lxml 还是 No module named 'lxml'

    第 1 条附言  ·  67 天前
    @mzfenng 3L 正解,非常感谢!

    但是我电脑上应该只有 python2 和 python3 两个解释器啊,是这两个冲突了吗?

    希望大佬能帮忙解释或者推一些关于 python 路径 (macOS) 的答疑文章,萌新真的有点晕晕的诶

    p.s.
    which python3 结果:
    /usr/local/bin/python3
    14 回复  |  直到 2019-09-25 12:43:56 +08:00
        1
    ysc3839   68 天前 via Android
    执行
    ```
    pip3 -V
    which python3
    ```
    看看?
        2
    zer   67 天前
    用 venv 吧
        3
    mzfenng   67 天前
    用 python3 -m pip install lxml 安装
        4
    ipwx   67 天前
    3L 正解。
        5
    trys1   67 天前 via Android
    venv 或 pyenv 了解一下
        6
    ericls   67 天前 via iPhone
    which python?
        7
    ynyounuo   67 天前 via iPhone
    pip3 的 shebang 指向的和你 PATH 指向的 python3 可能不同,head -2 $(which pip3) 看一下咯
        8
    leverestfish   67 天前
    @ynyounuo #!/usr/local/opt/python/bin/python3.7
    请问这是什么意思? 我系统里还有第二个 python 解释器吗
        9
    ynyounuo   67 天前
    @leverestfish
    可以用 readlink -f 看看 /usr/local/bin/python3 和 /usr/local/opt/python/bin/python3.7 是否为同一个 python 的软链
        10
    leverestfish   67 天前
    @ynyounuo 我看了下两个好像不一样,一个是 homebrew 装的,一个是我直接在官网下载后安装的
    另外这个命令我用不来,Google 了也没搞明白。
        11
    gIrl1990   67 天前
    ```text
    for v in "/usr/bin" "/usr/local/bin" "/usr/local/opt"
    find -E "$v" -regex ".*/python[^.]?([0-9]\.?)*.?"|xargs gls -lF --color
    end

    for v in "/usr/bin" "/usr/local/bin" "/usr/local/opt"
    find -E "$v" -regex ".*/pip[^.]?([0-9]\.?)*.?"|xargs gls -lF --color
    end
    ```

    你可以试下,搜下 python,然后看看 pip 是否对应 python
    注释 1. 上面是 fish shell 的命令,大致明白意思就是
        12
    leverestfish   67 天前
    @gIrl1990 我大概理解,但我不会用 fish shell
        13
    gIrl1990   67 天前   ♥ 1
    @leverestfish 其实就是在这 3 个目录"/usr/bin" "/usr/local/bin" "/usr/local/opt"里面找满足规则的 python/pip 的文件,它可能是个 executable file 也可能是个链接或者文件夹(一般来说不会放到其它目录里;如果是链接的话,可以使用 greadlink -f 递归找到最终文件)。 这样就知道了共有哪几个 Python

    pip 的话就是个可执行文本,参考前人说的,head -n 2 看下文件头,看它指向哪个 python 就可以了

    gls, greadlink 都是 gnu coreutils 的,和 macos bad 对应的命令是有些许区别的。通过 brew install coreutils 安装
        14
    gIrl1990   54 天前
    @leverestfish 那就给你来个 bash 的吧
    ```bash
    #!/bin/bash
    IFS=":" read -r -a REPLY <<< "$PATH"
    for x in "python" "pip"; do
    for v in "${REPLY[@]}"; do
    find "$v" -regex ".*/${x}[^\-]*" -exec gls -lFhAv --color {} \;
    done
    done
    ```

    ps: https://github.com/koalaman/shellcheck/wiki/SC2207
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2432 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 14:59 · PVG 22:59 · LAX 06:59 · JFK 09:59
    ♥ Do have faith in what you're doing.