【发布时间】:2023-03-21 14:15:01
【问题描述】:
我想我找到了“一个功能”,在一些奇怪的情况下pip 列出了一个已安装的包,即使它不是。如果有人可以向我解释发生了什么-那就太好了。以下是重现的步骤:
设置两个python环境:
$ python3 -m venv env_1 && python3 -m venv env_2用setup.py获取任何普通的python包进行安装,我个人用的是我在网上找到的第一条:
$ git clone https://github.com/BillMills/python-package-example.git激活 env_1:
$ . env_1/bin/activate安装你得到的包作为开发包:
$ pip install -e python-package-example停用 env_1,激活 env_2:
$ deactivate && . env_2/bin/activate进入您刚刚为 env_1 安装的包并列出已安装的包(用于 env_2):
$ cd python-package-example && pip list
无论出于何种原因,这显示 python-package-example 已安装。仅当您在此文件夹中时才有效,并且仅在您将其作为开发包安装一次之后才有效。
附: python3 -m pip show python-package-example 在env_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