对于你所说的,首先想到的是你应该使用:
pip freeze
不是
pip3 freeze
因为激活 virtualenv 时映射到 pip 版本的命令是第一个。请注意,安装时您似乎使用pip,而不是pip3
此外,--user 选项 afaik 与安装在用户文件夹中的软件包有关:
--user Install to the Python user install directory for your platform. Typically
~/.local/, or %APPDATA%\Python on
Windows. (See the Python documentation for site.USER_BASE for full details.)
如果您的软件包安装在 virtualenv 文件夹中,我会告诉您不要使用该选项。
另外,请确保您的 virtualenv 已激活。在 linux 中,您可以通过 source path/to/virtualenv/activate 进行操作
编辑
我了解您使用 pip3 的原因是因为您的机器中可能有不同版本的 Python。让我进一步解释一下它是如何工作的,因为版本管理通常是许多程序员头疼的问题,而且这样做时经常会发现问题。
如果您在 linux 机器上安装不同版本的 Python,并且您以 root 身份执行此操作,那么整个系统的安装将继续进行。通常Linux机器的Python2安装文件夹是/usr/bin/python。但是,我不确定哪个目录用于 Python3 安装。您可以通过whereis python3 轻松检查。您可以通过whereis command 搜索任何命令的二进制路径。请注意,这也适用于whereis python,只要您没有激活virtualenv。
此外,命令二进制文件的链接(或更广泛地说是要执行的指令集)在 Linux 中的某些文件夹中定义,具体取决于您是以 root 还是用户身份创建命令,并且可能也在发行版上。这在 Windows 中的工作方式有所不同,它使用注册表编辑实用程序来处理命令映射。当您启用 virtualenv 时,您所做的是创建一个环境,该环境可以将python 等系统命令映射到您的 virtualenv 文件夹中的 Python 安装。
当您禁用 virtualenv 时,该命令会再次指向默认安装路径。 pip 也是如此,因此不正确地使用此工具可能会导致不同的软件包安装在不同的位置,因此在任何给定情况下都无法用于正确的 Python 版本。
在 Linux 中,环境变量依赖于 shell,但您可以使用 echo $variable 将它们写出来并使用 variable=value 设置它们(来自 bash)。搜索路径简称为 PATH,您可以通过键入 echo $PATH 来获取。
来源:https://askubuntu.com/a/262073/426469
我鼓励您查看 SE 网络中的其他问题,例如:https://unix.stackexchange.com/a/42211/96121,以了解更多信息。
附录
快速提示:pip freeze 命令的常用用法如下:
pip freeze > requirements.txt
这是一个标准,可以让您了解此类文件中的模块是应用程序正常运行所必需的。当您在另一台计算机上安装程序时,这使您可以轻松排除 virtualenv 文件夹,因为您可以轻松了解全新安装的要求。但是,您可以根据需要使用该命令。