话虽如此,有一个 OP 实际上有类似的目标。Anaconda 环境是否可以共享软件包? 这个 OP 说他们的硬盘空间不足。暗示“共享”应该使用新环境中已安装的相同软件包。答案(未被接受)是使用
--clone
。我还发现了这篇文章,新创建的 conda env 是否继承基本 env 的所有软件包? 它说
--clone
不共享软件包。在这篇文章中,OP 认为他们的新环境“共享”软件包,然后得出结论“共享”软件包不存在。非分离 anaconda 环境的用途是什么?
我测试了 --clone
标志和 Conda 文档中的 "构建相同环境" 选项。两个 env 目录的大小完全相同:2G+。(base) $ conda list --explicit > spec-file.txt
# Produced Size On Disk: 2.14 GB (2,305,961,984 bytes)
(base) conda create --name myclone --clone root
# Produced Size On Disk, clone: 2.14 GB (2,304,331,776 bytes)
唯一的区别是重新下载软件包建立相同的环境,而复制本地文件则需要 更少的时间。
我使用Miniconda来部署CLI工具到同事的工作站。基本上,这些工具都使用相同的软件包,偶尔会有例外,当我需要添加一个特定的模块时,我不想在基本安装中添加它。 目标是使用conda create创建扩展基本软件包的环境,类似于
virtualenv --system-site-packages
,而不是重复安装。
更新2020-02-08
回应@merv和他链接的这篇文章(为什么要安装软件包而不只是将其链接到特定环境中?),该文章指出Conda venvs默认继承基础软件包。我在本周末又有机会遇到了这个问题。以下是基本情况:
下载了Miniconda安装程序。按以下设置进行安装:
- 为我安装
- 安装位置:(C:\Users\xtian\Miniconda3_64)
注意:我添加了
_64
- 高级选项
- 将Anaconda添加到系统PATH变量中,False
- 将Anaconda注册为系统Python 3.7,True
我更新了pip和setuptools,
conda update pip setuptools
下面,我列出了base
中的软件包:
(base) C:\Users\xtian>conda list
# packages in environment at C:\Users\xtian\Miniconda3_64:
#
# Name Version Build Channel
asn1crypto 1.3.0 py37_0
ca-certificates 2020.1.1 0
certifi 2019.11.28 py37_0
cffi 1.13.2 py37h7a1dbc1_0
chardet 3.0.4 py37_1003
conda 4.8.2 py37_0
conda-package-handling 1.6.0 py37h62dcd97_0
console_shortcut 0.1.1 3
cryptography 2.8 py37h7a1dbc1_0
idna 2.8 py37_0
menuinst 1.4.16 py37he774522_0
openssl 1.1.1d he774522_3
pip 20.0.2 py37_1
powershell_shortcut 0.0.1 2
pycosat 0.6.3 py37he774522_0
pycparser 2.19 py37_0
pyopenssl 19.1.0 py37_0
pysocks 1.7.1 py37_0
python 3.7.4 h5263a28_0
pywin32 227 py37he774522_1
requests 2.22.0 py37_1
ruamel_yaml 0.15.87 py37he774522_0
setuptools 45.1.0 py37_0
six 1.14.0 py37_0
sqlite 3.31.1 he774522_0
tqdm 4.42.0 py_0
urllib3 1.25.8 py37_0
vc 14.1 h0510ff6_4
vs2015_runtime 14.16.27012 hf0eaf9b_1
wheel 0.34.2 py37_0
win_inet_pton 1.1.0 py37_0
wincertstore 0.2 py37_0
yaml 0.1.7 hc54c509_2
然后我成功创建了新的虚拟环境:
(base) C:\Users\xtian>conda create -n wsgiserver
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: C:\Users\xtian\Miniconda3_64\envs\wsgiserver
Proceed ([y]/n)? y
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
我在这里激活新的wsgiserver虚拟环境,列出包并最终使用pip
进行测试--但是没有pip
!我今天使用了64位和32位安装程序进行测试:
(base) C:\Users\xtian>conda activate wsgiserver
(wsgiserver) C:\Users\xtian>conda list
# packages in environment at C:\Users\xtian\Miniconda3_64\envs\wsgiserver:
#
# Name Version Build Channel
(wsgiserver) C:\Users\xtian>pip
'pip' is not recognized as an internal or external command,
operable program or batch file.
Anaconda3/Lib
只有700MB。而另一方面,Anaconda3/pkgs
是2.58G——与2.14G相差不大。(顺便说一下,整个目录是4G)。 - xtian