`pip3 freeze` 在开头打印很多包

Posted

技术标签:

【中文标题】`pip3 freeze` 在开头打印很多包【英文标题】:`pip3 freeze` prints many packages at the beginning 【发布时间】:2018-11-16 18:22:39 【问题描述】:

我创建了virtualenv 并命令了pip3 freeze,因为我正在使用python3 来运行我的项目。

virtualenv .
source bin/activate
pip3 freeze

然而,pip3 freeze 打印了 default(?) python3 包,即使我还没有安装任何包:

backports.weakref==1.0rc1
bleach==1.5.0
certifi==2017.7.27.1
chardet==3.0.4
configparser==3.5.0
defusedxml==0.5.0
Django==1.11.12
django-allauth==0.32.0
django-crispy-forms==1.6.1
django-filter==1.0.4
django-widget-tweaks==1.4.1
djangorestframework==3.7.7
enum34==1.1.6
flake8==3.4.1
flake8-docstrings==1.1.0
flake8-polyfill==1.0.1
html5lib==0.9999999
idna==2.5
Keras==2.0.6
Markdown==2.6.8
mccabe==0.6.1
numpy==1.13.1
oauthlib==2.0.2
olefile==0.44
Pillow==4.2.1
protobuf==3.3.0
pycodestyle==2.3.1
pydocstyle==2.0.0
pyflakes==1.5.0
python3-openid==3.1.0
pytz==2018.3
PyYAML==3.12
requests==2.18.3
requests-oauthlib==0.8.0
scipy==0.19.1
six==1.10.0
snowballstemmer==1.2.1
tensorflow==1.2.1
Theano==0.9.0
urllib3==1.22
Werkzeug==0.12.2

显然我不想为我的虚拟机安装 tensorflow 和 Theano。 :(

为什么它有默认(?)python3 包?我们可以从头开始吗?

【问题讨论】:

你在生产服务器上吗? 我在我的 mac 电脑上。我把我的桌面留在了另一个状态,直到八月底我才能把它捡起来。桌面使用的是 Ubuntu。 python> import scipy - 如果该列表或列表中的任何其他导入有效,那么您确实已安装软件包。 但是我不能在这里运行 django 如果你用一句话组成你的cmets来表达你想要的,而不是过度评论会更好 【参考方案1】:

如果你可以import他们,你确实有这些包。

import sys 然后检查print(sys.path) 哪些目录中有你的包。

通常会列出像site-packages 这样的目录。

你可以pip3 uninstall <package>你不想要的东西,如果需要,从site-packages目录中删除。但pip3 uninstall 是首选。

请注意,您还可以通过以下方式了解您的包裹位置:pip3 show numpy

哪些打印:

Name: numpy
Version: 1.14.3
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
Location: c:\python36\lib\site-packages
Requires:
Required-by: scipy, pandas

【讨论】:

import sys 然后print(sys.path) 获取目录列表。找到包含site-packages 的那个,它会告诉你位置。通常类似于'C:\\Python36\\lib\\site-packages' 这是结果'/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages' 好的,你可以删除不需要的包,或者使用 pip。我推荐 pip 但如果 pip 由于某种原因失败,您可以从目录中删除 但是pip 不是python2.6 吗?我使用了pip3,因为我的django 项目适用于python3.x。我不应该继续使用pip3 吗?我需要指挥python3 manage.py runserver 删除site-packages上的文件列表并删除所有包是否可行?【参考方案2】:

嗯,我认为“默认包”是指解释器附带的标准库。其中许多包不是标准库包。所以这让我相信问题是虚拟环境没有正确设置,并且你的 pip 3 二进制文件指向已经安装的全局包。

让我们澄清和确认一些事情。虚拟环境只不过是更改 shell 配置以指向其配置目录本地已安装的 python 解释器。因此,当您的虚拟环境被激活时,您应该在提示符旁边获得一个 shell 指示,指示哪个 env 被激活,您还可以运行命令来查看您的 shell 将默认安装的 pip 安装。

我会做以下事情,当你的虚拟环境被激活时,首先在你的 shell 中运行这个命令:

which pip3

这将告诉您使用的确切点轴承。如果它指向您的虚拟环境中的那个,那就太好了!如果没有,让我们使用 venv 的内置 python 3 模块重做:

python -m venv venv

这将设置一个名为 venv 的 venv(这是约定,你可以任意命名)

激活它:

source venv/lib/activate

然后再检查一遍:

Which pip3 

告诉我结果

【讨论】:

两个打印件:/usr/local/bin/pip3; 那绝对不是你的venv,我确实输入了错误的命令来激活它。使用 source venv/bin/activate,告诉我如果你的 shell 改变了,它应该在你的提示符旁边标记 venv 哦..没有模块名称venv。虽然我不使用venv..??我宁愿坚持virtualenv。我不熟悉venv。你觉得值得吗? 另外,venv 命令是否创建了一个包含 venv 的文件夹等?我注意到您使用的是 python3 二进制文件,因此请重复 seps。 我不确定你所说的 seps 是什么意思。 :P【参考方案3】:

我遇到了同样的问题。 如果您检查which pip3,您将看到/usr/bin/pip3 而不是您的virtualenv。 我建议新项目有一个单独的 virtualenv 文件夹。在这种情况下(或谁知道)将更容易复制/重命名/删除它。

我的解决方案:

    第一deactivate 升级virtualenv pip3 install --upgrade virtualenv 重命名您的 virtualenv(以防万一)。 安装新的 virtualenv virtualenv -p python3 uenv 激活 virtualenv source uenv/bin/activate 请与pip3 freeze 确认是否为空 从文件pip3 install -r requirements.txt安装

你现在应该没事了。如果你检查which pip3,你会看到你的 virtualenv。 您可以删除旧的 virtualenv。 此方法允许您从文件 (requirements.txt) 写入/读取包,而无需手动编辑文件。手动编辑 requirements.txt 是一个坏习惯,可能会导致错误。

【讨论】:

以上是关于`pip3 freeze` 在开头打印很多包的主要内容,如果未能解决你的问题,请参考以下文章

命令“打印所有以开头的行”[关闭]

Python代码仅打印以A开头的字母

将数字 1 - 100 打印到屏幕上,在 li 开头添加了额外的空白列表元素

离线安装python环境

在 java 开头带有 default 子句的 switch 语句

为啥包名称通常以“com”开头[重复]