我创建了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包?我们可以从头开始吗?
答案 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提供一个单独的文件夹。在这种情况下(或谁知道),将更容易进行复制/重命名/删除。
我的解决方案:
deactivate
pip3 install --upgrade virtualenv
virtualenv -p python3 uenv
source uenv/bin/activate
pip3 freeze
检查以确保为空pip3 install -r requirements.txt
安装您现在应该可以了。如果您使用which pip3
进行检查,则会看到您的virtualenv。
您可以删除旧的virtualenv。
该方法允许您从文件(requirements.txt
)写入/读取包,而无需手动编辑文件。手动编辑requirements.txt的习惯很糟糕,并可能导致错误。