【问题标题】:"which" not able to locate packages installed with pip (WSL)“哪个”无法找到使用 pip (WSL) 安装的软件包
【发布时间】:2019-10-06 23:43:22
【问题描述】:

我尝试开始在 WSL 中编写 Python,但整个体验非常混乱。要安装软件包,我知道我想使用 pip3,但是任何 pip3 命令都会导致

Traceback (most recent call last): File "/usr/bin/pip3", line 9, in <module> from pip import main ImportError: cannot import name 'main'

我的解决方法是使用以下命令进行安装,已经工作:

python3 -mpip install --user somePackageName

我现在真正的困惑来自which 命令没有找到由上述命令安装的软件包。但是,我知道当我运行“python3 -mpip freeze”时它们就在那里。这是因为它们是本地安装的吗?

(另外,如果有人在 WSL 中使用 Python 和 pip 并可以权衡如何配置我的 Python 环境,以避免这些类型的问题,那将非常有帮助。)

谢谢!

【问题讨论】:

    标签: python python-3.x pip windows-subsystem-for-linux


    【解决方案1】:

    试试:python -m site

    (可能将python 替换为python3 等)

    你应该得到一个带有以下块的简短输出,

    从 Windows:

    sys.path = [
        '<your current working directory>',
        'C:\\Python38a2\\python38.zip',
        'C:\\Python38a2\\DLLs',
        'C:\\Python38a2\\lib',
        'C:\\Python38a2',
        'C:\\Python38a2\\lib\\site-packages',
    ]
    

    来自 WSL:

    sys.path = [
        '<your current working directory>',
        '/usr/lib/python37.zip',
        '/usr/lib/python3.7',
        '/usr/lib/python3.7/lib-dynload',
        '/home/<username>/.local/lib/python3.7/site-packages',
        '/usr/local/lib/python3.7/dist-packages',
        '/usr/lib/python3/dist-packages',
    ]
    

    这就是您要查找已安装软件包的地方。

    这里的顺序是导入优先级(较早的条目“胜过”后面的条目)

    对于pip installed 包,您通常需要查看site-packages 目录。

    对于&lt;package manager&gt; installed 包,您通常需要查看dist-packages 目录。

    最后,which 通常用于在您的$PATH 环境变量中查找可执行文件(并且,至少对我而言,要求它们将可执行位设置为出现在结果中) .

    在这里,您正在寻找不同的东西,可以由 Python 导入的模块或包。换句话说,您的$PYTHONPATH 上的模块或包。

    这是两种不同类型的“路径”。

    在您的解释器中,$PYTHONPATH 映射到 sys.path$PATH 映射到 os.environ['PATH']

    【讨论】:

    • 谢谢——这很有帮助。但是为了将来参考,我应该做些什么不同的事情,以便我可以看到我的包裹 which
    • 我不这么认为——我建议改用find,例如find / -name "*numpy*"
    猜你喜欢
    • 2019-04-21
    • 2019-03-09
    • 2017-07-27
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    相关资源
    最近更新 更多