【问题标题】:`pip list` listing packages which are actually not installed`pip list` 列出实际未安装的包
【发布时间】:2023-03-21 14:15:01
【问题描述】:

我想我找到了“一个功能”,在一些奇怪的情况下pip 列出了一个已安装的包,即使它不是。如果有人可以向我解释发生了什么-那就太好了。以下是重现的步骤:

  1. 设置两个python环境:$ python3 -m venv env_1 && python3 -m venv env_2

  2. 用setup.py获取任何普通的python包进行安装,我个人用的是我在网上找到的第一条:$ git clone https://github.com/BillMills/python-package-example.git

  3. 激活 env_1:$ . env_1/bin/activate

  4. 安装你得到的包作为开发包$ pip install -e python-package-example

  5. 停用 env_1,激活 env_2:$ deactivate && . env_2/bin/activate

  6. 进入您刚刚为 env_1 安装的包并列出已安装的包(用于 env_2):$ cd python-package-example && pip list

无论出于何种原因,这显示 python-package-example 已安装。仅当您在此文件夹中时才有效,并且仅在您将其作为开发包安装一次之后才有效。

附: python3 -m pip show python-package-exampleenv_1 显示:

Name: python-package-example
Version: 0.1
Summary: An example python package
Home-page: https://github.com/BillMills/python-package-example
Author: Bill Mills
Author-email: myemail@example.com
License: MIT
Location: /home/esrlabs/Workspace/testing/bash/test/python-package-example
Requires: numpy
Required-by:

env_2 中的相同查询在 python-package-example 之外返回 WARNING: Package(s) not found: python-package-example,并在该文件夹中返回与 env_1 相同的内容。

【问题讨论】:

  • 向我们展示python3 -m pip show python-package-example 在每个环境中的输出。
  • @sinoroc 我用输出更新了问题。
  • 是的,肯定会发生一些令人惊讶的事情......我有点可以重现类似的东西。如果我与something.egg-info 目录位于同一目录中,并且我运行pip show something,我会按预期收到warning package not found,但python -m pip show something 会为该项目提供有效输出,这是出乎意料的。

标签: python-3.x pip python-venv


【解决方案1】:

可能和这个pip issue有关。

当前工作目录中的python_package_example.egg-info/ 以某种方式被拾取并注册为已安装项目。

我不会太担心。正如前面提到的问题的 cmets 中所说,这就是为什么 src layout 是一个非常好的东西,并且在大多数情况下可以缓解这个问题以及许多其他类似问题。

【讨论】:

    【解决方案2】:

    我无法复制:

    (env_2) test-venv $$ cd python-package-example/
    (env_2) python-package-example $$ pip list
    Package    Version
    ---------- -------
    pip        19.3.1 
    setuptools 41.4.0 
    wheel      0.33.6 
    

    python-package-example 未列出。

    【讨论】:

    • 是的,我试图在家里用 Arch + python 3.7 重现它,但做不到......这里使用 Ubuntu 18.04 + python 3.6 它就像我描述的那样工作。所以我猜它甚至可能不是 pip 本身的问题,而是完全不同的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 2020-12-02
    • 2018-02-06
    • 2020-10-22
    • 2018-06-17
    • 1970-01-01
    相关资源
    最近更新 更多