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

时间:2018-06-06 23:28:19

标签: python django python-3.x virtualenv

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

virtualenv .
source bin/activate
pip3 freeze

但是,pip3 freeze打印了默认(?)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包?我们可以从头开始吗?

3 个答案:

答案 0 :(得分:2)

如果可以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

答案 1 :(得分:1)

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

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

我会执行以下操作,首先在您的虚拟环境激活时在shell中运行此命令:

which pip3

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

python -m venv venv

这将设置一个名为venv的venv(这是惯例,你可以命名它)

激活它:

source venv/lib/activate

然后再次检查:

Which pip3 

让我知道结果

答案 2 :(得分:0)

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

我的解决方案:

  1. 第一个deactivate
  2. 升级virtualenv pip3 install --upgrade virtualenv
  3. 重命名您的virtualenv(以防万一)。
  4. 安装新的virtualenv virtualenv -p python3 uenv
  5. 激活virtualenv source uenv/bin/activate
  6. 使用pip3 freeze检查以确保为空
  7. 从文件pip3 install -r requirements.txt安装

您现在应该可以了。如果您使用which pip3进行检查,则会看到您的virtualenv。
您可以删除旧的virtualenv。
该方法允许您从文件(requirements.txt)写入/读取包,而无需手动编辑文件。手动编辑requirements.txt的习惯很糟糕,并可能导致错误。