Description
Have two similar but not identical explicit spec files. Here's an example with flask=1.0.2 and flask=1.0.3, generated with the following commands:
conda create -n flask102 flask=1.0.2
conda list -n flask102 --explicit > flask102.txt
conda create -n flask103 flask=1.0.3
conda list -n flask103 --explicit > flask103.txt
The resulting files are flask102.txt and flask103.txt. Note that they only differ by a single package. To reproduce, download these two files and run the following commands in a conda installation with a clean cache:
conda create -n TestEnv1 --file flask102.txt
conda create -n TestEnv2 --file flask102.txt
conda create -n TestEnv3 --file flask103.txt
Notice the difference in behavior when creating TestEnv2 versus TestEnv3. Creating TestEnv1 will, as expected, download all packages into the package cache. Creating TestEnv2 will, as expected, use the existing packages in the package cache and not download any additional packages. TestEnv3 will, rather than downloading a single package (flask=1.0.3) and using the rest from the cache, download every single package over again.
The behavior appears to be that, if even a single package is missing from the cache, ALL packages in the environment will be downloaded rather than just those missing from the cache. You can confirm this by now manually deleting flask 1.0.3 from the package cache and then running this command:
conda create -n TestEnv4 --file flask103.txt
and noting that it will again redownload everything, rather than just downloading flask 1.0.3.
Environment Information
`conda info`
active environment : base
active env location : C:\Users\username\AppData\Local\Continuum\miniconda3-debug
shell level : 1
user config file : C:\Users\username\.condarc
populated config files :
conda version : 4.7.10
conda-build version : not installed
python version : 3.7.3.final.0
virtual packages :
base environment : C:\Users\username\AppData\Local\Continuum\miniconda3-debug (writable)
channel URLs : https://repo.anaconda.com/pkgs/main/win-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/win-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/msys2/win-64
https://repo.anaconda.com/pkgs/msys2/noarch
package cache : C:\Users\username\AppData\Local\Continuum\miniconda3-debug\pkgs
C:\Users\username\.conda\pkgs
C:\Users\username\AppData\Local\conda\conda\pkgs
envs directories : C:\Users\username\AppData\Local\Continuum\miniconda3-debug\envs
C:\Users\username\.conda\envs
C:\Users\username\AppData\Local\conda\conda\envs
platform : win-64
user-agent : conda/4.7.10 requests/2.22.0 CPython/3.7.3 Windows/10 Windows/10.0.15063
administrator : False
netrc file : C:\Users\username/.netrc
offline mode : False
`conda list --show-channel-urls`
# Name Version Build Channel
asn1crypto 0.24.0 py37_0 defaults
bzip2 1.0.8 he774522_0 defaults
ca-certificates 2019.5.15 0 defaults
certifi 2019.6.16 py37_1 defaults
cffi 1.12.3 py37h7a1dbc1_0 defaults
chardet 3.0.4 py37_1003 defaults
conda 4.7.10 py37_0 defaults
conda-package-handling 1.3.11 py37_0 defaults
cryptography 2.7 py37h7a1dbc1_0 defaults
idna 2.8 py37_0 defaults
libarchive 3.3.3 h0643e63_5 defaults
libiconv 1.15 h1df5818_7 defaults
libxml2 2.9.9 h464c3ec_0 defaults
lz4-c 1.8.1.2 h2fa13f4_0 defaults
lzo 2.10 h6df0209_2 defaults
menuinst 1.4.16 py37he774522_0 defaults
openssl 1.1.1c he774522_1 defaults
pip 19.1.1 py37_0 defaults
pycosat 0.6.3 py37hfa6e2cd_0 defaults
pycparser 2.19 py37_0 defaults
pyopenssl 19.0.0 py37_0 defaults
pysocks 1.7.0 py37_0 defaults
python 3.7.3 h8c8aaf0_1 defaults
python-libarchive-c 2.8 py37_11 defaults
pywin32 223 py37hfa6e2cd_1 defaults
requests 2.22.0 py37_0 defaults
ruamel_yaml 0.15.46 py37hfa6e2cd_0 defaults
setuptools 41.0.1 py37_0 defaults
six 1.12.0 py37_0 defaults
sqlite 3.29.0 he774522_0 defaults
tqdm 4.32.1 py_0 defaults
urllib3 1.24.2 py37_0 defaults
vc 14.1 h0510ff6_4 defaults
vs2015_runtime 14.15.26706 h3a45250_4 defaults
wheel 0.33.4 py37_0 defaults
win_inet_pton 1.1.0 py37_0 defaults
wincertstore 0.2 py37_0 defaults
xz 5.2.4 h2fa13f4_4 defaults
yaml 0.1.7 hc54c509_2 defaults
zlib 1.2.11 h62dcd97_3 defaults
zstd 1.3.7 h508b16e_0 defaults