8000 conda extremely slow · Issue #7239 · conda/conda · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

conda extremely slow #7239

8000
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
1 of 2 tasks
cjw296 opened this issue May 2, 2018 · 159 comments
Closed
1 of 2 tasks

conda extremely slow #7239

cjw296 opened this issue May 2, 2018 · 159 comments
Labels
locked [bot] locked due to inactivity solver pertains to the solver source::community catch-all for issues filed by community members type::feature request for a new feature or capability

Comments

@cjw296
Copy link
cjw296 commented May 2, 2018

I'm submitting a...

  • bug report
  • feature request

Current Behavior

conda operations appear to be particularly slow, this seems to have got worse as the versions have progressed.

Steps to Reproduce

time conda install -c simplistix picky-conda=2.0.2

The above currently takes 30-40s into an existing environment.

Expected Behavior

Hopefully done and dusted within a second or two.

Environment Information

`conda info`

$ conda info

     active environment : myproj
    active env location : /Users/chris/anaconda2/envs/moneybox
            shell level : 1
       user config file : /Users/chris/.condarc
 populated config files : /Users/chris/.condarc
          conda version : 4.5.1
    conda-build version : 3.8.0
         python version : 2.7.14.final.0
       base environment : /Users/chris/anaconda2  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/osx-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/osx-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/osx-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/pro/osx-64
                          https://repo.anaconda.com/pkgs/pro/noarch
                          https://conda.anaconda.org/conda-forge/osx-64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : /Users/chris/anaconda2/pkgs
                          /Users/chris/.conda/pkgs
       envs directories : /Users/chris/anaconda2/envs
                          /Users/chris/.conda/envs
               platform : osx-64
             user-agent : conda/4.5.1 requests/2.18.4 CPython/2.7.14 Darwin/17.5.0 OSX/10.13.4
                UID:GID : 501:20
             netrc file : None
           offline mode : False

@kalefranz
Copy link
Contributor
kalefranz commented May 2, 2018

done and dusted within a second or two

Conda will never be as fast as pip, so long as we're doing real environment solves and pip satisfies itself only for the current operation. A more appropriate comparison for performance is yum or apt-get.

Unless we've had a major regression, improving performance is a (perfectly legitimate) feature request, not a bug report.

@kalefranz kalefranz added type::feature request for a new feature or capability source::community catch-all for issues filed by community members labels May 2, 2018
@cjw296
Copy link
Author
cjw296 commented May 2, 2018

I guess.. #6174 looked interesting, but 30s+ to install a package is not ideal. Even OS packagers like yum or aptitude aren't that slow...

@kalefranz
Copy link
Contributor
kalefranz commented May 2, 2018 via email

@mbargull
Copy link
Member
mbargull commented May 7, 2018

Obviously, performance improvements are/will be an ongoing goal. But this issue doesn't add any value and can be closed, IMHO. Apart from the initial download and extraction (which, currently, can mostly only be marginally (meaning by a low constant factor) be improved by parallelization) that

time conda install -yc simplistix picky-conda=2.0.2

takes < 5 seconds on my machine.

Without knowing what "existing environment" from the problem description

The above currently takes 30-40s into an existing environment.

means, there isn't really much to analyze/improve here.

@cjw296
Copy link
Author
cjw296 commented May 7, 2018

@kalefranz - I don't think I actually mentioned pip, that was you ;-)

@mbargull - here's a more useful set of example:

$ time conda create -n test1 -yc simplistix picky-conda=2.0.2
Solving environment: done

## Package Plan ##

  environment location: /Users/chris/miniconda3/envs/test1

  added / updated specs: 
    - picky-conda=2.0.2


The following NEW packages will be INSTALLED:

    ca-certificates: 2018.4.16-0      conda-forge
    certifi:         2018.4.16-py36_0 conda-forge
    ncurses:         5.9-10           conda-forge
    openssl:         1.0.2o-0         conda-forge
    picky-conda:     2.0.2-py_0       simplistix 
    pip:             9.0.3-py36_0     conda-forge
    python:          3.6.5-1          conda-forge
    pyyaml:          3.12-py36_1      conda-forge
    readline:        7.0-0            conda-forge
    setuptools:      39.1.0-py36_0    conda-forge
    sqlite:          3.20.1-2         conda-forge
    tk:              8.6.7-0          conda-forge
    wheel:           0.31.0-py36_0    conda-forge
    xz:              5.2.3-0          conda-forge
    yaml:            0.1.7-0          conda-forge
    zlib:            1.2.11-0         conda-forge

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test1
#
# To deactivate an active environment, use
#
#     $ conda deactivate


real	0m15.732s
user	0m8.607s
sys	0m2.798s

This was up near a minute before the packages were downloaded, but even with them all in the cache, that's still 15s.

Okay, let's try a more normal scipy stack:

$ time conda create -n test2 -y numpy pandas bokeh
Solving environment: done

## Package Plan ##

  environment location: /Users/chris/miniconda3/envs/test2

  added / updated specs: 
    - bokeh
    - numpy
    - pandas


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    openblas-0.2.20            |                7        20.1 MB  conda-forge
    packaging-17.1             |             py_0          20 KB  conda-forge
    pandas-0.22.0              |           py36_1        10.8 MB  conda-forge
    numpy-1.14.3               |py36_blas_openblas_200         3.9 MB  conda-forge
    jinja2-2.10                |           py36_0         183 KB  conda-forge
    tornado-5.0.2              |           py36_0         651 KB  conda-forge
    markupsafe-1.0             |           py36_0          22 KB  conda-forge
    pyparsing-2.2.0            |           py36_0          95 KB  conda-forge
    python-dateutil-2.7.2      |             py_0         203 KB  conda-forge
    bokeh-0.12.15              |           py36_0         4.2 MB  conda-forge
    six-1.11.0                 |           py36_1          20 KB  conda-forge
    libgfortran-3.0.0          |                0         465 KB  conda-forge
    blas-1.1                   |         openblas           1 KB  conda-forge
    pytz-2018.4                |             py_0         215 KB  conda-forge
    ------------------------------------------------------------
                                           Total:        40.8 MB

The following NEW packages will be INSTALLED:

    blas:            1.1-openblas                  conda-forge
    bokeh:           0.12.15-py36_0                conda-forge
    ca-certificates: 2018.4.16-0                   conda-forge
    certifi:         2018.4.16-py36_0              conda-forge
    jinja2:          2.10-py36_0                   conda-forge
    libgfortran:     3.0.0-0                       conda-forge
    markupsafe:      1.0-py36_0                    conda-forge
    ncurses:         5.9-10                        conda-forge
    numpy:           1.14.3-py36_blas_openblas_200 conda-forge [blas_openblas]
    openblas:        0.2.20-7                      conda-forge
    openssl:         1.0.2o-0                      conda-forge
    packaging:       17.1-py_0                     conda-forge
    pandas:          0.22.0-py36_1                 conda-forge
    pip:             9.0.3-py36_0                  conda-forge
    pyparsing:       2.2.0-py36_0                  conda-forge
    python:          3.6.5-1                       conda-forge
    python-dateutil: 2.7.2-py_0                    conda-forge
    pytz:            2018.4-py_0                   conda-forge
    pyyaml:          3.12-py36_1                   conda-forge
    readline:        7.0-0                         conda-forge
    setuptools:      39.1.0-py36_0                 conda-forge
    six:             1.11.0-py36_1                 conda-forge
    sqlite:          3.20.1-2                      conda-forge
    tk:              8.6.7-0                       conda-forge
    tornado:         5.0.2-py36_0                  conda-forge
    wheel:           0.31.0-py36_0                 conda-forge
    xz:              5.2.3-0                       conda-forge
    yaml:            0.1.7-0                       conda-forge
    zlib:            1.2.11-0                      conda-forge


Downloading and Extracting Packages
openblas 0.2.20######################################################################################################################################################################### | 100% 
packaging 17.1#######################################
8000
################################################################################################################################### | 100% 
pandas 0.22.0########################################################################################################################################################################### | 100% 
numpy 1.14.3############################################################################################################################################################################ | 100% 
jinja2 2.10############################################################################################################################################################################# | 100% 
tornado 5.0.2########################################################################################################################################################################### | 100% 
markupsafe 1.0########################################################################################################################################################################## | 100% 
pyparsing 2.2.0######################################################################################################################################################################### | 100% 
python-dateutil 2.7.2################################################################################################################################################################### | 100% 
bokeh 0.12.15########################################################################################################################################################################### | 100% 
six 1.11.0############################################################################################################################################################################## | 100% 
libgfortran 3.0.0####################################################################################################################################################################### | 100% 
blas 1.1################################################################################################################################################################################ | 100% 
pytz 2018.4############################################################################################################################################################################# | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test2
#
# To deactivate an active environment, use
#
#     $ conda deactivate


real	1m14.739s
user	0m43.711s
sys	0m6.826s

Over a minute now, but I have more sympathy here as it's a more complete environment and there were some downloads in there...

Now here's the kicker: into that test2 environment, installing one extra package:

$ time conda install -yc simplistix picky-conda=2.0.2
Solving environment: done

## Package Plan ##

  environment location: /Users/chris/miniconda3/envs/test2

  added / updated specs: 
    - picky-conda=2.0.2


The following NEW packages will be INSTALLED:

    picky-conda: 2.0.2-py_0 simplistix

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

real	0m11.486s
user	0m9.228s
sys	0m0.545s

I'd be intrigued to know why what takes you 5s takes me 11s. My suspicion is still that this is solver slowness, which would explain why in my more complicated production environment this jumps up to 30-40s.

@kalefranz kalefranz added the solver pertains to the solver label May 7, 2018
@kalefranz
Copy link
Contributor

My suspicion is still that this is solver slowness, which would explain why in my more complicated production environment this jumps up to 30-40s.

I agree that problem in particular sounds concentrated in the solver rather than other areas of the code base. It's hard to tell though without actual profiling data. There's that likely explanation, than a few dozen other edge case explanations that could all be in play. Conda interacts with a lot of surface area.

@cjw296
Copy link
Author
cjw296 commented May 7, 2018

If you have profiling commands I can usefully run, more than happy to do so :-)

@mbargull
Copy link
Member
mbargull commented May 8, 2018

For anything north of 20 s or so (and excluding the time during download and extraction of packages), I agree it's likely time spent by the solver.

I'd be intrigued to know why what takes you 5s takes me 11s.

That's likely because I didn't include conda-forge in the channel list. conda-forge is a huge channel which gets updated very frequently. Hence, usually conda will need to download and parse the channel's repository index. The is some room for performance improvements regarding the parsing, but that might mean working against the generic and tidy concept that code uses, which wouldn't be very nice. For overall performance improvements, there are other parts (mainly solver) that provide more potential for gains 😉.

See the following output for execution times that nearly solely consist of index updates -- without and with conda-forge added.
(Those CONDA_CHANNELS= lines are to preload the less often updated parts of the defaults channel.)
The gist is that adding conda-forge adds approx. 6 seconds to the index update phase -- which is exactly the 5 to 11 seconds delta. Looks like our setups perform surprisingly similarly 😄

unset conda
set -x
conda --version
conda clean -yi
time conda create --dry-run -vvnx 2>&1 | grep 'make_request'
time conda create --dry-run -vvnx -c conda-forge 2>&1 | grep 'make_request'
conda clean -yi
time conda create --dry-run -vvnx -c conda-forge 2>&1 | grep 'make_request'
conda clean -yi
CONDA_CHANNELS="$(conda config --show default_channels | sed -n 's/^  - //p' | grep -v 'main$' | paste -sd,)" \
    conda create --dry-run -nx 2>&1 >/dev/null
time conda create --dry-run -vvnx 2>&1 | grep 'make_request'
conda clean -yi
CONDA_CHANNELS="$(conda config --show default_channels | sed -n 's/^  - //p' | grep -v 'main$' | paste -sd,)" \
    conda create --dry-run -nx 2>&1 >/dev/null
time conda create --dry-run -vvnx -c conda-forge 2>&1 | grep 'make_request'
time conda create --dry-run -vvnx 2>&1 | grep 'make_request'
time conda create --dry-run -vvnx -c conda-forge 2>&1 | grep 'make_request'
+ conda --version
conda 4.5.2
+ conda clean -yi
+ conda create --dry-run -vvnx
+ grep make_request
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/pro/noarch/repodata.json.bz2 HTTP/1.1" 200 110
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/r/noarch/repodata.json.bz2 HTTP/1.1" 200 372
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/free/noarch/repodata.json.bz2 HTTP/1.1" 200 1928
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/main/noarch/repodata.json.bz2 HTTP/1.1" 200 22384
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/main/linux-64/repodata.json.bz2 HTTP/1.1" 200 391602
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/pro/linux-64/repodata.json.bz2 HTTP/1.1" 200 26668
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/r/linux-64/repodata.json.bz2 HTTP/1.1" 200 122248
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/free/linux-64/repodata.json.bz2 HTTP/1.1" 200 437385

real	0m3.977s
user	0m3.579s
sys	0m0.082s
+ conda create --dry-run -vvnx -c conda-forge
+ grep make_request
DEBUG urllib3.connectionpool:_make_request(396): https://conda.anaconda.org:443 "GET /conda-forge/noarch/repodata.json HTTP/1.1" 200 None
DEBUG urllib3.connectionpool:_make_request(396): https://conda.anaconda.org:443 "GET /conda-forge/linux-64/repodata.json HTTP/1.1" 200 None

real	0m8.365s
user	0m6.662s
sys	0m0.233s
+ conda clean -yi
+ conda create --dry-run -vvnx -c conda-forge
+ grep make_request
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/free/linux-64/repodata.json.bz2 HTTP/1.1" 200 437385
DEBUG urllib3.connectionpool:_make_request(396): https://conda.anaconda.org:443 "GET /conda-forge/noarch/repodata.json HTTP/1.1" 200 None
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/pro/noarch/repodata.json.bz2 HTTP/1.1" 200 110
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/r/noarch/repodata.json.bz2 HTTP/1.1" 200 372
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/main/linux-64/repodata.json.bz2 HTTP/1.1" 200 391602
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/free/noarch/repodata.json.bz2 HTTP/1.1" 200 1928
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/main/noarch/repodata.json.bz2 HTTP/1.1" 200 22384
DEBUG urllib3.connectionpool:_make_request(396): https://conda.anaconda.org:443 "GET /conda-forge/linux-64/repodata.json HTTP/1.1" 200 None
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/pro/linux-64/repodata.json.bz2 HTTP/1.1" 200 26668
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/r/linux-64/repodata.json.bz2 HTTP/1.1" 200 122248

real	0m11.599s
user	0m9.541s
sys	0m0.256s
+ conda clean -yi
++ conda config --show default_channels
++ sed -n 's/^  - //p'
++ grep -v 'main$'
++ paste -sd,
+ CONDA_CHANNELS=https://repo.anaconda.com/pkgs/free,https://repo.anaconda.com/pkgs/r,https://repo.anaconda.com/pkgs/pro
+ conda create --dry-run -nx
+ conda create --dry-run -vvnx
+ grep make_request
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/main/noarch/repodata.json.bz2 HTTP/1.1" 200 22384
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/main/linux-64/repodata.json.bz2 HTTP/1.1" 200 391602

real	0m1.494s
user	0m1.241s
sys	0m0.081s
+ conda clean -yi
++ conda config --show default_channels
++ sed -n 's/^  - //p'
++ grep -v 'main$'
++ paste -sd,
+ CONDA_CHANNELS=https://repo.anaconda.com/pkgs/free,https://repo.anaconda.com/pkgs/r,https://repo.anaconda.com/pkgs/pro
+ conda create --dry-run -nx
+ conda create --dry-run -vvnx -c conda-forge
+ grep make_request
DEBUG urllib3.connectionpool:_make_request(396): https://conda.anaconda.org:443 "GET /conda-forge/noarch/repodata.json HTTP/1.1" 200 None
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/main/linux-64/repodata.json.bz2 HTTP/1.1" 200 391602
DEBUG urllib3.connectionpool:_make_request(396): https://repo.anaconda.com:443 "GET /pkgs/main/noarch/repodata.json.bz2 HTTP/1.1" 200 22384
DEBUG urllib3.connectionpool:_make_request(396): https://conda.anaconda.org:443 "GET /conda-forge/linux-64/repodata.json HTTP/1.1" 200 None

real	0m9.320s
user	0m7.230s
sys	0m0.234s
+ conda create --dry-run -vvnx
+ grep make_request

real	0m0.658s
user	0m0.602s
sys	0m0.060s
+ conda create --dry-run -vvnx -c conda-forge
+ grep make_request
DEBUG urllib3.connectionpool:_make_request(396): https://conda.anaconda.org:443 "GET /conda-forge/noarch/repodata.json HTTP/1.1" 304 0
DEBUG urllib3.connectionpool:_make_request(396): https://conda.anaconda.org:443 "GET /conda-forge/linux-64/repodata.json HTTP/1.1" 304 0

real	0m2.387s
user	0m1.358s
sys	0m0.172s

@kalefranz
Copy link
Contributor
kalefranz commented May 8, 2018 via email

@kalefranz
Copy link
Contributor
kalefranz commented May 8, 2018

The gist is that adding conda-forge adds approx. 6 seconds to the index update phase

I agree that number is at the point where we should start considering improvements. Some type of repodata diff scheme is an obvious option. Or we could consider sharding by package name.

@kalefranz
Copy link
Contributor

Oh. The Dist removal that just got merged into master might cut 2 sec off the 6.

@mbargull
Copy link
Member
mbargull commented May 8, 2018

The best way to isolate repodata handling for benchmarking, etc, is to use conda search.

Good point, but I was mostly trying to replicate/showcase the most common use case, i.e.

CONDA_CHANNELS="$(conda config --show default_channels | sed -n 's/^  - //p' | grep -v 'main$' | paste -sd,)" \
    conda create --dry-run -nx 2>&1 >/dev/null
time conda create --dry-run -vvnx -c conda-forge 2>&1 | grep 'make_request'

To isolate the solver use conda create -nt --dry-run and set local_repodata_ttl to something like 3600.

Didn't know about local_repodata_ttl, neat!

Oh. The Dist removal that just got merged into master might cut 2 sec off the 6.

Nice! Have yet to try 4.6 out.

@mbargull
Copy link
Member
mbargull commented May 9, 2018

Oh. The Dist removal that just got merged into master might cut 2 sec off the 6.

Sorry, can't confirm that statement:

|$ CONDA_PROJECT_ROOT=/tmp/conda
|$ git clone https://github.com/conda/conda "${CONDA_PROJECT_ROOT}" 
Cloning into '/tmp/conda'...
remote: Counting objects: 61350, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 61350 (delta 3), reused 11 (delta 3), pack-reused 61338
Receiving objects: 100% (61350/61350), 22.10 MiB | 9.74 MiB/s, done.
Resolving deltas: 100% (44891/44891), done.
|$ cd "${CONDA_PROJECT_ROOT}"
|$ . dev/start >/dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 56.1M  100 56.1M    0     0  10.5M      0  0:00:05  0:00:05 --:--:-- 10.9M
Python 3.6.5 :: Anaconda, Inc.
rm -rf /tmp/conda/devenv/lib/python3.6/site-packages/conda-4.5.2-py3.6.egg-info
rm -rf /tmp/conda/devenv/lib/python3.6/site-packages/conda
rm -rf /tmp/conda/devenv/lib/python3.6/site-packages/conda_env
|(base) $ git checkout 4.5.3 2>/dev/null && conda --version && conda clean -yi && conda create --dry-run -nx >/dev/null 2>&1 && time conda create --dry-run -nx -c conda-forge >/dev/null
conda 4.5.3

real	0m10.544s
user	0m9.483s
sys	0m0.353s
|(base) $ git checkout 4.6.0a2 2>/dev/null && conda --version && conda clean -yi && conda create --dry-run -nx >/dev/null 2>&1 && time conda create --dry-run -nx -c conda-forge >/dev/null
conda 4.6.0a2

Dry run. Exiting.


real	0m11.025s
user	0m9.504s
sys	0m0.338s
|(base) $ git checkout master >/dev/null && conda --version && conda clean -yi && conda create --dry-run -nx >/dev/null 2>&1 && time conda create --dry-run -nx -c conda-forge >/dev/null
Previous HEAD position was c467517c update CHANGELOG 4.6.0
Switched to branch 'master'
conda 4.6.0a2.post57+9d792a19

Dry run. Exiting.


real	0m7.179s
user	0m5.217s
sys	0m0.241s

Looks like it's more than 2 seconds 😉. Good job!!!

@kalefranz
Copy link
Contributor

🎉🎉🎉

@erbas
Copy link
erbas commented May 20, 2018

Dear Conda developers,

I have three different osx machines where I use conda, one of them brand new, and conda is slow enough that I would ditch it if there was a halfway decent alternative. I work on several different projects and need to switch and create environments constantly. It is not acceptable to say, "oh it's probably your system config". Conda should work out of the box on the machines people actually use.

If conda-forge has gotten too large, take it out of the defaults. At least add some documentation about performance. Downloading packages is fast, but conda list takes seconds and that should only be querying my local machine. conda env list is also annoyingly slow. Please devote some effort to performance this is getting really frustrating.

@goanpeca
Copy link
Contributor

@erbas conda version 4.6 included some fixes regarding speed improvements. Could you check

conda install conda -c conda-canary

And test if this version does indeed improve your specific problems?

@erbas
Copy link
erbas commented May 20, 2018 via email

@goanpeca
Copy link
Contributor

@erbas indeed optimization went to commands like conda list, we are working on improvements on the solver :-)

@kalefranz
Copy link
Contributor

If conda-forge has gotten too large, take it out of the defaults.

The conda-forge channel is not in defaults under default configuration.

@erbas Can you please provide the output if conda info.

@tiagopereira
Copy link

Also confirm that "Solving environment" is painfully slow on a modern machine (>1 minute). I have conda-forge, intel, and defaults as channels. Perhaps this is too much?

@mturok
Copy link
mturok commented Jun 28, 2018

Also confirmed that seeing slowness for doing a simple conda install of a local package. I only have default as a channel.

> time conda install foo --use-local 
Solving environment: done

# All requested packages already installed.


real	0m38.158s
user	0m37.276s
sys	0m0.632s

@hadim
Copy link
hadim commented Jun 30, 2018

Indeed conda list is at least twice faster in my case with conda 4.6 from canary. Very nice improvement!

Please keep the work on optimization and keep us in touch.

@nehaljwani
Copy link
Contributor
nehaljwani commented Jul 2, 2018

Although not recommended, I use the following in my ~/.condarc for noticeable speed improvements:

safety_checks: disabled
add_pip_as_python_dependency : false
rollback_enabled: false
notify_outdated_conda: false

The safety_checks takes the major chunk off. Disabling it reduces quite some file I/O because of dropping sha256 checks for every file in the packages that are going to be installed.

@nehaljwani
Copy link
Contributor

conda env list iterates over all existing environments (if you are UID 0, it iterates over all existing environments of all users on the machine) and also checks if the environment actually exists, I think that what slows it down.

@kalefranz
Copy link
Contributor

Nehal maybe we could get some profiling/timing numbers? The hashing does add some extra time, although I doubt that’s where most users get tripped up here. It definitely makes a difference when building a lot of packages.

For most users I think setting local_repodata_ttl (don’t remember the exact key name) to 24 hours or so is better advice. It all depends on the specific use case though.

The settings you have there are EXTREMELY dangerous and SHOULD NOT be used by most users. They disable all current and future security guarantees built into conda, and they also disable transactional rollbacks, so your environment will be completely hosed if something goes wrong.

@okomarov
Copy link
okomarov commented Feb 25, 2021 via email

@abalter
Copy link
abalter commented Feb 25, 2021

I was thinking that I can't count download time (it's instantaneous if the packages are already there and depends on internet speed), but it took around 3 minutes to solve the environment and start downloading.

@abalter
Copy link
abalter commented Feb 25, 2021

@okomarov -- how about an environment for bioinformatics that uses python, gatk, and samtools? Or, all of your packages and a single r package?

Basically, any environment that includes python stuff AND a few things that aren't python, but need to meet the same dependencies.

@DavidMertz
Copy link
DavidMertz commented Feb 25, 2021

@SylvainCorlay I'm jealous. I cannot get mamba to work at all because of "Problem with the SSL CA cert" messages. I've filed an issue with that project (the problem happens often, but not always... which is weird).

@abalter I think mine is going a significantly faster since I set strict channel priority today:

% cat ~/.condarc
channels:
  - intel
  - conda-forge
  - defaults
  - davidmertz
report_errors: true
auto_activate_base: false
anaconda_upload: true
channel_priority: strict

Not fast, but less slow (37 minutes is a lot better than it was):

2545-tmp % time conda env create
Warning: you have pip-installed dependencies in your environment file, but you do not list pip itself as one of your conda dependencies.  Conda may not use the correct pip to install your packages, and they may end up in the wrong place.  Please add an explicit pip dependency.  I'm adding one for you, but still nagging you.
Collecting package metadata (repodata.json): done
Solving environment: -
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
Examining conflict for tensorflow matplotlib scikit-learn pytorch seaborn: : 16it [Examining conflict for tensorflow matplotlib scikit-learn pytorch seaborn: : 17it [Examining conflict for tensorflow pip python: : 17it [09:11, 27.50s/it]            Examining conflict for tensorflow scikit-learn numpy seaborn: : 18it [09:25, 27.14sExamining conflict for tensorflow scikit-learn numpy seaborn: : 19it [09:25, 23.29sExamining conflict for tensorflow scikit-learn pytorch seaborn numpy: : 19it [09:53Examining conflict for tensorflow scikit-learn pytorch seaborn numpy: : 20it [09:53Examining conflict for pandas seaborn matplotlib: : 20it [10:38, 24.68s/it]        Examining conflict for matplotlib jupyter pandas scikit-learn pillow numpy python: Examining conflict for matplotlib jupyter pandas scikit-learn pillow numpy python: Examining conflict for pandas seaborn jupyter matplotlib: : 22it [11:05, 22.50s/it]Examining conflict for matplotlib torchvision pandas pillow seaborn: : 23it [11:28,Examining conflict for matplotlib torchvision pandas pillow seaborn: : 24it [11:28,Examining conflict for seaborn pillow matplotlib torchvision: : 24it [11:46, 23.00sExamining conflict for seaborn pillow matplotlib torchvision: : 25it [11:46, 21.28sExamining conflict for matplotlib torchvision jupyter seaborn pandas scikit-learn pExamining conflict for matplotlib torchvision jupyter seaborn pandas scikit-learn pExamining conflict for pillow torchvision: : 26it [12:25, 17.15s/it]             failed
Solving environment: \
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
Examining conflict for tensorflow matplotlib scikit-learn pytorch seaborn: : 16it [Examining conflict for tensorflow matplotlib scikit-learn pytorch seaborn: : 17it [Examining conflict for tensorflow pip python: : 17it [10:08, 29.54s/it]            Examining conflict for tensorflow scikit-learn numpy seaborn: : 18it [10:27, 29.43sExamining conflict for tensorflow scikit-learn numpy seaborn: : 19it [10:27, 26.07sExamining conflict for tensorflow scikit-learn pytorch seaborn numpy: : 19it [10:57Examining conflict for tensorflow scikit-learn pytorch seaborn numpy: : 20it [10:57Examining conflict for pandas seaborn matplotlib: : 20it [11:49, 27.23s/it]        Examining conflict for matplotlib jupyter pandas scikit-learn pillow numpy python: Examining conflict for matplotlib jupyter pandas scikit-learn pillow numpy python: Examining conflict for pandas seaborn jupyter matplotlib: : 22it [12:19, 25.47s/it]Examining conflict for matplotlib torchvision pandas pillow seaborn: : 23it [12:44,Examining conflict for matplotlib torchvision pandas pillow seaborn: : 24it [12:44,Examining conflict for seaborn pillow matplotlib torchvision: : 24it [13:03, 25.60sExamining conflict for seaborn pillow matplotlib torchvision: : 25it [13:03, 23.44sExamining conflict for matplotlib torchvision jupyter seaborn pandas scikit-learn pExamining conflict for matplotlib torchvision jupyter seaborn pandas scikit-learn pExamining conflict for pillow torchvision: : 26it [13:44, 18.59s/it]             failed

UnsatisfiableError: The following specifications were found to be incompatible with each other:

Output in format: Requested package -> Available versions

Package bleach conflicts for:
tensorflow -> bleach==1.5.0
jupyter -> nbconvert -> bleach
tensorflow -> tensorboard[version='>=1.6.0,<1.7.0'] -> bleach[version='
10000
>=1.5.0,<1.5.1.0a0']

Package pypy3.6 conflicts for:
pip -> setuptools -> pypy3.6[version='7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*|>=7.3.1|>=7.3.2|>=7.3.3']
pillow -> pypy3.6[version='>=7.3.1|>=7.3.2|>=7.3.3']
scikit-learn -> numpy[version='>=1.19,<1.20.0a0'] -> pypy3.6[version='7.3.*|7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*|>=7.3.1']
scikit-learn -> pypy3.6[version='>=7.3.2|>=7.3.3']
numpy -> pypy3.6[version='>=7.3.1|>=7.3.2|>=7.3.3']
pillow -> python=3.6 -> pypy3.6[version='7.3.*|7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*']
tensorflow -> absl-py[version='>=0.7.0'] -> pypy3.6[version='7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*|>=7.3.1|>=7.3.2|>=7.3.3']
matplotlib -> pypy3.6[version='>=7.3.2|>=7.3.3']
jupyter -> pypy3.6[version='>=7.3.3']
numpy -> python[version='>=3.6,<3.7.0a0'] -> pypy3.6[version='7.3.*|7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*']
pandas -> pypy3.6[version='>=7.3.1|>=7.3.2']
pytorch -> ninja -> pypy3.6[version='7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*|>=7.3.1|>=7.3.3|>=7.3.2']
torchvision -> numpy[version='>=1.11'] -> pypy3.6[version='7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*|>=7.3.1|>=7.3.2|>=7.3.3']
matplotlib -> numpy[version='>=1.19,<1.20.0a0'] -> pypy3.6[version='7.3.*|7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*|>=7.3.1']
jupyter -> ipykernel -> pypy3.6[version='7.3.*|7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*|>=7.3.1|>=7.3.2']
seaborn -> statsmodels[version='>=0.8.0'] -> pypy3.6[version='7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*|>=7.3.1|>=7.3.2|>=7.3.3']
pandas -> numpy[version='>=1.18.5,<2.0a0'] -> pypy3.6[version='7.3.*|7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*|>=7.3.3']

Package numpy conflicts for:
seaborn -> numpy[version='>=1.13.3|>=1.9.3']
matplotlib -> numpy[version='1.10.*|1.11.*|1.14.*|>=1.14,<1.15.0a0|>=1.15.2,<2.0a0|>=1.16,<1.17.0a0|>=1.17,<1.18.0a0|>=1.18,<1.19.0a0|>=1.19,<1.20.0a0|>=1.14.6,<2.0a0']
pytorch -> numpy[version='>=1.11.3,<2.0a0|>=1.11|>=1.16.6,<2.0a0|>=1.19.5,<2.0a0|>=1.19.4,<2.0a0|>=1.14.6,<2.0a0|>=1.9.3,<2.0a0|>=1.9']
torchvision -> pytorch==1.5.0 -> numpy[version='>=1.11.3,<2.0a0|>=1.16.6,<2.0a0|>=1.19.5,<2.0a0|>=1.19.4,<2.0a0|>=1.14.6,<2.0a0|>=1.9.3,<2.0a0|>=1.9']
numpy
seaborn -> seaborn-base[version='>=0.11.1,<0.11.2.0a0'] -> numpy[version='1.10.*|1.11.*|1.12.*|1.13.*|1.14.*|>=1.11.3,<2.0a0|>=1.11|>=1.14.6,<2.0a0|>=1.15.4,<2.0a0|>=1.15|>=1.19.5,<2.0a0|>=1.16.6,<2.0a0|>=1.18.5,<2.0a0|>=1.16.5,<2.0a0|>=1.19.2,<2.0a0|>=1.18.1,<2.0a0|>=1.17.5,<2.0a0|>=1.9.3,<2.0a0|>=1.17.0,<2.0a0|>=1.19.1,<2.0a0|>=1.19.4,<2.0a0|>=1.18,<1.19.0a0|>=1.17,<1.18.0a0|>=1.16,<1.17.0a0|>=1.15.3,<2.0a0|>=1.15.2,<2.0a0|>=1.14,<1.15.0a0|>=1.18.4,<2.0a0|>=1.12.1,<2.0a0|>=1.11.*|>=1.9.*|>=1.13.3,<2.0a0|>=1.19,<1.20.0a0|>=1.15,<1.16.0a0|>=1.9|>=1.15.1,<2.0a0|>=1.8|>=1.7|>=1.4.0']
scikit-learn -> daal4py -> numpy[version='>=1.11|>=1.13|>=1.15|>=1.15,<1.16.0a0|>=1.18.1,<2.0a0|>=1.15.1,<2.0a0']
torchvision -> numpy[version='>1.11|>=1.11']
matplotlib -> matplotlib-base[version='>=3.3.4,<3.3.5.0a0'] -> numpy[version='>=1.11.3,<2.0a0|>=1.15.4,<2.0a0|>=1.16.5,<2.0a0|>=1.16.6,<2.0a0|>=1.19.5,<2.0a0|>=1.18.5,<2.0a0|>=1.19.4,<2.0a0|>=1.19.2,<2.0a0|>=1.9.3,<2.0a0']
pandas -> numpy[version='1.10.*|1.11.*|1.12.*|1.13.*|1.14.*|>=1.14,<1.15.0a0|>=1.15.2,<2.0a0|>=1.15.3,<2.0a0|>=1.16,<1.17.0a0|>=1.17,<1.18.0a0|>=1.18,<1.19.0a0|>=1.18.5,<2.0a0|>=1.19.2,<2.0a0|>=1.19.5,<2.0a0|>=1.16.6,<2.0a0|>=1.19.4,<2.0a0|>=1.16.5,<2.0a0|>=1.15.4,<2.0a0|>=1.14.6,<2.0a0|>=1.18.4,<2.0a0|>=1.18.1,<2.0a0|>=1.12.1,<2.0a0|>=1.9.3,<2.0a0|>=1.11.*|>=1.9.*|>=1.11|>=1.9|>=1.8|>=1.7|>=1.13.3,<2.0a0|>=1.11.3,<2.0a0']
scikit-learn -> numpy[version='1.10.*|1.11.*|1.12.*|1.13.*|1.14.*|>=1.14,<1.15.0a0|>=1.15.2,<2.0a0|>=1.15.3,<2.0a0|>=1.16,<1.17.0a0|>=1.17,<1.18.0a0|>=1.18,<1.19.0a0|>=1.19,<1.20.0a0|>=1.19.5,<2.0a0|>=1.18.5,<2.0a0|>=1.16.6,<2.0a0|>=1.19.4,<2.0a0|>=1.16.5,<2.0a0|>=1.19.2,<2.0a0|>=1.14.6,<2.0a0|>=1.11.3,<2.0a0|>=1.9.3,<2.0a0|>=1.9']
pandas -> matplotlib -> numpy[version='>=1.11.3|>=1.19,<1.20.0a0|>=1.16.4,<2.0a0']

Package llvm-openmp conflicts for:
scikit-learn -> mkl[version='>=2019'] -> llvm-openmp[version='>=10.0.0|>=11.0.0|>=9.0.1|>=11.0.1|>=10.0.1']
numpy -> mkl[version='>=2018.0.0'] -> llvm-openmp[version='>=10.0.0|>=11.0.0|>=9.0.1|>=10.0.1|>=11.0.1']
pytorch -> blas=[build=mkl] -> llvm-openmp[version='>=10.0.0|>=11.0.0|>=11.0.1|>=9.0.1']
tensorflow -> mkl -> llvm-openmp[version='>=10.0.0|>=11.0.0|>=9.0.1']

Package tzdata conflicts for:
pandas -> python[version='>=3.9,<3.10.0a0'] -> tzdata
jupyter -> python[version='>=3.9,<3.10.0a0'] -> tzdata
pip -> python[version='>=3.6'] -> tzdata
numpy -> python[version='>=3.9,<3.10.0a0'] -> tzdata
pytorch -> python[version='>=3.9,<3.10.0a0'] -> tzdata
matplotlib -> python[version='>=3.9,<3.10.0a0'] -> tzdata
torchvision -> python[version='>=3.9,<3.10.0a0'] -> tzdata
seaborn -> python[version='>=3.6'] -> tzdata
scikit-learn -> python[version='>=3.9,<3.10.0a0'] -> tzdata
pillow -> python[version='>=3.9,<3.10.0a0'] -> tzdata

Package libgcc conflicts for:
tensorflow -> scipy[version='>=0.15.1'] -> libgcc
matplotlib -> pyqt -> libgcc
pytorch -> libgcc
scikit-learn -> scipy -> libgcc
seaborn -> scipy[version='>=0.15.2'] -> libgcc

Package dpcpp_cpp_rt conflicts for:
numpy -> mkl_fft[version='>=1.2.0,<2.0a0'] -> dpcpp_cpp_rt=2021
seaborn -> scipy[version='>=1.0.1'] -> dpcpp_cpp_rt
tensorflow -> scipy[version='>=1.4.1'] -> dpcpp_cpp_rt
scikit-learn -> icc_rt[version='>=16.0.3'] -> dpcpp_cpp_rt=2021

Package liblapacke conflicts for:
pytorch -> blas=[build=mkl] -> liblapacke[version='3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.9.0',build='4_mkl|5_mkl|8_mkl|12_mkl|14_mkl|18_mkl|20_mkl|5_mkl|7_mkl|8_mkl|6_mkl|21_mkl|19_mkl|16_mkl|15_mkl|13_mkl|11_mkl|10_mkl|9_mkl|7_mkl|6_mkl']
numpy -> blas=[build=openblas] -> liblapacke[version='3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.9.0|3.9.0|3.9.0|3.9.0|3.9.0|3.9.0|3.9.0|3.9.0',build='4_mkl|5_mkl|8_mkl|12_mkl|13_mkl|14_mkl|18_mkl|20_mkl|21_mkl|2_openblas|3_openblas|6_openblas|9_openblas|13_openblas|14_openblas|15_openblas|16_openblas|5_openblas|6_openblas|7_openblas|8_openblas|17_openblas|12_openblas|11_openblas|10_openblas|8_openblas|7_openblas|5_openblas|4_openblas|0_openblas|8_mkl|7_mkl|6_mkl|5_mkl|19_mkl|16_mkl|15_mkl|11_mkl|10_mkl|9_mkl|7_mkl|6_mkl']
scikit-learn -> blas=[build=openblas] -> liblapacke[version='3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.8.0|3.9.0|3.9.0|3.9.0|3.9.0|3.9.0|3.9.0|3.9.0|3.9.0',build='4_mkl|5_mkl|8_mkl|12_mkl|13_mkl|14_mkl|18_mkl|20_mkl|21_mkl|2_openblas|3_openblas|6_openblas|9_openblas|13_openblas|14_openblas|15_openblas|16_openblas|5_openblas|6_openblas|7_openblas|8_openblas|17_openblas|12_openblas|11_openblas|10_openblas|8_openblas|7_openblas|5_openblas|4_openblas|0_openblas|8_mkl|7_mkl|6_mkl|5_mkl|19_mkl|16_mkl|15_mkl|11_mkl|10_mkl|9_mkl|7_mkl|6_mkl']

Package cudnn conflicts for:
torchvision -> pytorch==1.7.1 -> cudnn[version='6.0.*|7.0.*|>=7.0.5,<=8.0a0|>=7.1.0,<=8.0a0|>=7.1.3,<8.0a0|>=7.3.0,<=8.0a0|>=7.6,<8.0a0|>=7.6.5,<8.0a0|>=7.6.4,<8.0a0|>=7.3.1,<8.0a0|>=7.1.2,<=8.0a0|>=7.0.0,<=8.0a0']
pytorch -> cudnn[version='5.1.*|6.0.*|7.0.*|>=7.6,<8.0a0|>=7.6.5,<8.0a0|>=7.6.4,<8.0a0|>=7.3.0,<=8.0a0|>=7.3.1,<8.0a0|>=7.1.3,<8.0a0|>=7.1.0,<=8.0a0|>=7.1.2,<=8.0a0|>=7.0.5,<=8.0a0|>=7.0.0,<=8.0a0']
tensorflow -> tensorflow-base==2.2.0=gpu_py37h8a81be8_0 -> cudnn[version='>=7.0.0,<=8.0a0|>=7.1.0,<=8.0a0|>=7.2.0,<=8.0a0|>=7.3.1,<8.0a0|>=7.6,<8.0a0|>=7.6.5,<8.0a0|>=7.6.0,<8.0a0|>=7.6.4,<8.0a0|>=7.1.2,<=8.0a0|>=7.0.5,<=8.0a0']

Package matplotlib conflicts for:
matplotlib
seaborn -> matplotlib[version='>=1.4.3|>=2.1.2']
pandas -> matplotlib

Package functools32 conflicts for:
pandas -> matplotlib -> functools32
matplotlib -> functools32
seaborn -> matplotlib-base[version='>=2.1.2'] -> functools32
tensorflow -> tensorflow-base==2.1.0=gpu_py27hb9b3ea8_0 -> functools32[version='>=3.2.3.2']

Package pillow conflicts for:
matplotlib -> matplotlib-base[version='>=3.3.4,<3.3.5.0a0'] -> pillow[version='>=6.2.0']
seaborn -> matplotlib-base[version='>=2.1.2'] -> pillow[version='>=6.2.0']
pillow
torchvision -> pillow[version='>=4.1.1']

Package _openmp_mutex conflicts for:
python=3.7 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
pillow -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
pytorch -> _openmp_mutex[version='>=4.5']
matplotlib -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
scikit-learn -> mkl[version='>=2019'] -> _openmp_mutex[version='*|>=4.5',build=*_llvm]
numpy -> mkl[version='>=2018.0.0'] -> _openmp_mutex[version='*|>=4.5',build=*_llvm]
torchvision -> pytorch==1.7.1 -> _openmp_mutex[version='>=4.5']
pytorch -> blas=[build=mkl] -> _openmp_mutex=[build=*_llvm]
tensorflow -> mkl -> _openmp_mutex[version='*|>=4.5',build=*_llvm]
pandas -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']

Package libtiff conflicts for:
pillow -> libtiff[version='4.*|4.0.*|>=4.2.0,<5.0a0|>=4.1.0,<5.0a0|>=4.0.10,<5.0a0|>=4.0.9,<5.0a0|>=4.0.8,<4.0.10|>=4.0.3,<4.0.8|4.0.6|>=4.0.8,<5.0a0']
torchvision -> pillow[version='>=4.1.1'] -> libtiff[version='4.0.*|>=4.2.0,<5.0a0|>=4.1.0,<5.0a0|>=4.0.10,<5.0a0|>=4.0.9,<5.0a0|>=4.0.8,<4.0.10|>=4.0.3,<4.0.8|>=4.0.8,<5.0a0']

Package nomkl conflicts for:
numpy -> openblas[version='>=0.3.3,<0.3.4.0a0'] -> nomkl==3.0=0
scikit-learn -> openblas[version='>=0.3.3,<0.3.4.0a0'] -> nomkl==3.0=0

Package pyqt conflicts for:
seaborn -> matplotlib[version='>=2.1.2'] -> pyqt[version='4.11.*|5.*|5.9.*|>=5.12.3,<5.13.0a0|>=5.6.0,<5.7.0a0|>=5.9.2,<5.10.0a0|>=5.6,<6.0a0|5.6.*']
jupyter -> qtconsole -> pyqt[version='4.11.*|5.6.*|>=5.6.0,<5.7.0a0|>=5.9.2,<5.10.0a0']
matplotlib -> pyqt[version='4.11.*|>=5.12.3,<5.13.0a0|>=5.6.0,<5.7.0a0|>=5.9.2,<5.10.0a0|5.9.*|>=5.6,<6.0a0|5.*|5.6.*']
pandas -> matplotlib -> pyqt[version='4.11.*|>=5.12.3,<5.13.0a0|>=5.6.0,<5.7.0a0|>=5.9.2,<5.10.0a0|5.9.*|>=5.6,<6.0a0|5.*|5.6.*']

Package fortran_rt conflicts for:
scikit-learn -> scipy -> fortran_rt
tensorflow -> scipy[version='>=1.4.1'] -> fortran_rt
seaborn -> scipy[version='>=1.0.1'] -> fortran_rt

Package libgfortran4 conflicts for:
pytorch -> blas=[build=mkl] -> libgfortran4[version='>=7.5.0']
seaborn -> scipy[version='>=1.0.1'] -> libgfortran4[version='>=7.5.0']
numpy -> libblas[version='>=3.8.0,<4.0a0'] -> libgfortran4[version='7.5.0.*|>=7.5.0']
scikit-learn -> scipy -> libgfortran4[version='>=7.5.0']
tensorflow -> scipy[version='>=1.4.1'] -> libgfortran4[version='>=7.5.0']

Package pip conflicts for:
numpy -> python[version='>=3.7,<3.8.0a0'] -> pip
pip
torchvision -> python[version='>=3.7,<3.8.0a0'] -> pip
pandas -> python[version='>=3.7,<3.8.0a0'] -> pip
seaborn -> python[version='>=3.6'] -> pip
jupyter -> python[version='>=3.6,<3.7.0a0'] -> pip
pillow -> python=3.6 -> pip
python=3.7 -> pip
scikit-learn -> python[version='>=3.7,<3.8.0a0'] -> pip
pytorch -> python[version='>=3.7,<3.8.0a0'] -> pip
matplotlib -> python[version='>=3.7,<3.8.0a0'] -> pip

Package libpng conflicts for:
tensorflow -> libpng[version='>=1.6.37,<1.7.0a0']
pillow -> freetype=2.9 -> libpng[version='1.6.*|>=1.6.35,<1.7.0a0|>=1.6.34,<1.7.0a0|>=1.6.32,<1.6.35|>=1.6.32,<1.7.0a0|>=1.6.37,<1.7.0a0|>=1.6.22,<1.6.31|>=1.6.28,<1.7|>=1.6.23,<1.7|>=1.6.21,<1.7']
pandas -> matplotlib -> libpng[version='1.6.*|>=1.6.23,<1.7|>=1.6.37,<1.7.0a0|>=1.6.36,<1.7.0a0|>=1.6.35,<1.7.0a0|>=1.6.34,<1.7.0a0|>=1.6.32,<1.7.0a0']
torchvision -> libpng
matplotlib -> freetype=2.10 -> libpng[version='>=1.6.21,<1.7|>=1.6.32,<1.6.35']
matplotlib -> libpng[version='1.6.*|>=1.6.23,<1.7|>=1.6.37,<1.7.0a0|>=1.6.36,<1.7.0a0|>=1.6.35,<1.7.0a0|>=1.6.34,<1.7.0a0|>=1.6.32,<1.7.0a0']
seaborn -> matplotlib-base[version='>=2.1.2'] -> libpng[version='1.6.*|>=1.6.35,<1.7.0a0|>=1.6.37,<1.7.0a0|>=1.6.36,<1.7.0a0|>=1.6.34,<1.7.0a0|>=1.6.32,<1.7.0a0|>=1.6.23,<1.7']

Package freetype conflicts for:
pandas -> matplotlib -> freetype[version='2.10.*|>=2.10.4,<3.0a0|2.9.*|2.6.*|>=2.9.1,<3.0a0|>=2.8,<2.9.0a0']
pillow -> freetype[version='2.5.*|2.8.*|2.9.*|>=2.10.4,<3.0a0|>=2.9.1,<3.0a0|>=2.8.1,<2.9.0a0|2.8.1.*|2.8.1|2.7|2.7|2.7.*|2.6.*|>=2.10.3,<3.0a0|>=2.8,<2.9.0a0']
seaborn -> matplotlib-base[version='>=2.1.2'] -> freetype[version='2.10.*|>=2.10.2,<3.0a0|>=2.10.4,<3.0a0|>=2.9.1,<3.0a0|2.9.*|>=2.8,<2.9.0a0|2.6.*']
matplotlib -> freetype[version='2.10.*|>=2.10.4,<3.0a0|2.9.*|2.6.*|>=2.9.1,<3.0a0|>=2.8,<2.9.0a0']
matplotlib -> matplotlib-base[version='>=3.3.1,<3.3.2.0a0'] -> freetype[version='>=2.10.2,<3.0a0']
torchvision -> pillow[version='>=4.1.1'] -> freetype[version='2.7|2.7.*|2.7|2.8.*|2.9.*|>=2.10.4,<3.0a0|>=2.9.1,<3.0a0|>=2.8.1,<2.9.0a0|2.8.1.*|2.8.1|>=2.10.3,<3.0a0|>=2.8,<2.9.0a0']

Package setuptools conflicts for:
matplotlib -> setuptools
python=3.7 -> pip -> setuptools
pandas -> matplotlib -> setuptools
tensorflow -> setuptools[version='<=39.1.0']
seaborn -> matplotlib-base[version='>=2.1.2'] -> setuptools
pip -> setuptools
scikit-learn -> joblib[version='>=0.11'] -> setuptools
tensorflow -> grpcio[version='>=1.8.6'] -> setuptools[version='>=36|>=41.0.0|>=41.4']

Package certifi conflicts for:
pip -> setuptools -> certifi[version='>=2016.09|>=2016.9.26']
seaborn -> matplotlib-base[version='>=2.1.2'] -> certifi[version='>=2020.06.20']
tensorflow -> setuptools[version='<=39.1.0'] -> certifi[version='>=2016.09']
matplotlib -> matplotlib-base[version='>=3.3.4,<3.3.5.0a0'] -> certifi[version='>=2016.09|>=2016.9.26|>=2020.06.20']

Package pandas conflicts for:
seaborn -> pandas[version='>=0.14.0|>=0.22.0']
pandas
seaborn -> seaborn-base[version='>=0.11.1,<0.11.2.0a0'] -> pandas[version='>=0.14|>=0.21|>=0.23']

Package wheel conflicts for:
python=3.7 -> pip -> wheel
pip -> wheel
tensorflow -> wheel[version='>=0.26']

Package mpich conflicts for:
tensorflow -> h5py[version='<2.11.0,>=2.10.0'] -> mpich[version='>=3.2.1,<3.3.0a0|>=3.3.1,<4.0.0a0|>=3.3.2,<4.0.0a0']
scikit-learn -> daal4py -> mpich[version='>=3.3.2,<4.0.0a0']

Package expat conflicts for:
python=3.7 -> pypy3.7=7.3.3 -> expat[version='>=2.2.9,<2.3.0a0']
pillow -> pypy3.7[version='>=7.3.3'] -> expat[version='>=2.2.9,<2.3.0a0']
pandas -> pypy3.7[version='>=7.3.3'] -> expat[version='>=2.2.9,<2.3.0a0']
scikit-learn -> pypy3.7[version='>=7.3.3'] -> expat[version='>=2.2.9,<2.3.0a0']
jupyter -> pypy3.7[version='>=7.3.3'] -> expat[version='>=2.2.9,<2.3.0a0']
numpy -> pypy3.7[version='>=7.3.3'] -> expat[version='>=2.2.9,<2.3.0a0']
matplotlib -> pypy3.6[version='>=7.3.3'] -> expat[version='>=2.2.9,<2.3.0a0']

Package cython conflicts for:
pytorch -> pyyaml -> cython
tensorflow -> grpcio[version='>=1.8.6'] -> cython

Package blis conflicts for:
pytorch -> libblas[version='>=3.9.0,<4.0a0'] -> blis[version='0.5.1.*|>=0.5.2,<0.5.3.0a0|>=0.6.0,<0.6.1.0a0|>=0.6.1,<0.6.2.0a0|>=0.7.0,<0.7.1.0a0|>=0.8.0,<0.8.1.0a0']
numpy -> libblas[version='>=3.8.0,<4.0a0'] -> blis[version='0.5.1.*|>=0.5.2,<0.5.3.0a0|>=0.6.0,<0.6.1.0a0|>=0.6.1,<0.6.2.0a0|>=0.7.0,<0.7.1.0a0|>=0.8.0,<0.8.1.0a0']

Package packaging conflicts for:
pip -> wheel -> packaging[version='>=20.2']
tensorflow -> wheel[version='>=0.26'] -> packaging[version='>=20.2']

Package pytorch conflicts for:
torchvision -> pytorch[version='1.1.*|1.2.0+cu92|1.2.0|1.3.0|1.3.1|1.4.0|1.5.0|1.7.1|1.7.0|1.6.0|1.5.1|>=1.1.0|>=1.0.0|>=0.4|>=0.3|1.3.1.*|1.2.0.*']
pytorch

Package scipy conflicts for:
tensorflow -> scipy[version='1.4.1|>=1.4.1|>=0.15.1']
tensorflow -> keras-preprocessing[version='>=1.1.0'] -> scipy[version='>=0.14|>=1.2.1']

Package backports conflicts for:
tensorflow -> backports.weakref[version='>=1.0rc1'] -> backports
matplotlib -> backports.functools_lru_cache -> backports

Package enum34 conflicts for:
tensorflow -> absl-py[version='>=0.7.0'] -> enum34[version='>=1.0.4|>=1.1.6,<2.0a0']
tensorflow -> enum34[version='>=1.1.6']The following specifications were found to be incompatible with your system:

  - feature:/linux-64::__glibc==2.32=0
  - feature:|@/linux-64::__glibc==2.32=0
  - pytorch -> magma[version='>=2.5.4,<2.5.5.0a0'] -> __glibc[version='>=2.17|>=2.17,<3.0.a0']
  - torchvision -> cudatoolkit[version='>=11.0,<11.1'] -> __glibc[version='>=2.17,<3.0.a0']

Your installed version is: 2.32

Note that strict channel priority may have removed packages required for satisfiability.


real    36m53.864s
user    36m52.546s
sys     0m2.065s

@DavidMertz
Copy link
DavidMertz commented Feb 25, 2021

Oh wait... after 37 minutes, it eventually just died without creating an environment. So that's not ideal.

Why the search started considering pypy versions I haven't the faintest idea. The environment.yml is exactly the one listed a couple comments up. No mention of pypy whatsoever in it.

@ppoilbarbe
Copy link

Ah, ah... There is complains about taking more than 30s. I would like this, it is very short time for me.
We create packages for science project. They are built by Gitlab-CI and build is run in docker environment.
The build of one package tooks more than 24h (I don't know how much since it is cut after 24h). Sometimes it takes less, it depends on conda mood.
The package built in this example is a metapackage used to join all sub packages of the project (all octantng packages in output below) and contains almost only dependencies for sub packages.
We use only 3 channels: octant (our packages channel), defaults and conda-forge.

When package builds, installing takes hours too, when it works. When it don't work we retry and it works...

Conda versions:

conda                     4.9.2            py37h06a4308_0  
conda-build               3.21.4           py37h06a4308_0  
conda-package-handling    1.7.2            py37h03888b9_0  
conda-verify              3.4.2                      py_1  

Here is the output of conda-build for python 3.7:

[9085] /builds/octantng/octant$ /builds/octantng/tox_workdir/py37-build/bin/conda-build --output-folder=/builds/octantng/octant/build/conda_packages --override-channels --channel octant --channel defaults --channel conda-forge conda_recipe
No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.16
WARNING:conda_build.metadata:No numpy version specified in conda_build_config.yaml.  Falling back to default numpy value of 1.16
Adding in variants from internal_defaults
INFO:conda_build.variants:Adding in variants from internal_defaults
Attempting to finalize metadata for octantng
INFO:conda_build.metadata:Attempting to finalize metadata for octantng
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... 
Warning: 2 possible package resolutions (only showing differing packages):
  - defaults/linux-64::jedi-0.17.2-py37h06a4308_1, defaults/noarch::parso-0.7.0-py_0
  - defaults/linux-64::jedi-0.17.0-py37_0, defaults/noarch::parso-0.8.1-pyhd3eb1b0_0done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
BUILD START: ['octantng-0.17.0-py37_0.conda']
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
## Package Plan ##
  environment location: /builds/octantng/tox_workdir/py37-build/conda-bld/octantng_1614764572238/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_place
The following NEW packages will
CEB7
 be INSTALLED:
    _libgcc_mutex:                 0.1-conda_forge              conda-forge
    _openmp_mutex:                 4.5-1_gnu                    conda-forge
    abseil-cpp:                    20200225.2-h2531618_0                   
    affine:                        2.3.0-py_0                              
    antlr-python-runtime:          4.7.2-py37hc8dfbb8_1002      conda-forge
    arrow-cpp:                     0.17.0-py37hc11a6a2_0        conda-forge
    asciitree:                     0.3.3-py_2                              
    async_generator:               1.10-py37h28b3542_0                     
    atk-1.0:                       2.36.0-h28cd5cc_0                       
    atpublic:                      1.0-py_0                     conda-forge
    attrs:                         20.3.0-pyhd3eb1b0_0                     
    aws-sdk-cpp:                   1.7.164-hc831370_1           conda-forge
    backcall:                      0.2.0-pyhd3eb1b0_0                      
    backports:                     1.0-pyhd3eb1b0_2                        
    backports.functools_lru_cache: 1.6.1-pyhd3eb1b0_0                      
    backports.tempfile:            1.0-pyhd3eb1b0_1                        
    backports.weakref:             1.0.post1-py_1                          
    blas:                          1.0-mkl                                 
    bleach:                        3.3.0-pyhd3eb1b0_0                      
    bokeh:                         2.3.0-py37h06a4308_0                    
    boost-cpp:                     1.72.0-h9359b55_3            conda-forge
    brotli:                        1.0.9-he6710b0_2                        
    brotlipy:                      0.7.0-py37h27cfd23_1003                 
    bzip2:                         1.0.8-h7b6447c_0                        
    c-ares:                        1.17.1-h27cfd23_0                       
    ca-certificates:               2021.1.19-h06a4308_0                    
    cairo:                         1.16.0-h9f066cc_1006         conda-forge
    cartopy:                       0.17.0-py37h17ca249_1015     conda-forge
    certifi:                       2020.12.5-py37h06a4308_0                
    cf-units:                      2.1.4-py37h161383b_2         conda-forge
    cffi:                          1.14.5-py37h261ae71_0                   
    cfitsio:                       3.470-hf0d0db6_5                        
    cftime:                        1.4.1-py37h6323ea4_0                    
    chardet:                       4.0.0-py37h06a4308_1003                 
    click:                         7.1.2-pyhd3eb1b0_0                      
    click-plugins:                 1.1.1-py_0                              
    cligj:                         0.7.1-py37h06a4308_0                    
    cloudpickle:                   1.6.0-py_0                              
    conda-package-handling:        1.7.2-py37h03888b9_0                    
    conda-verify:                  3.4.2-py_1                              
    configparser:                  5.0.2-pyhd3eb1b0_0                      
    coverage:                      5.5-py37h27cfd23_2                      
    cryptography:                  3.3.1-py37h3c74f83_1                    
    curl:                          7.69.1-hbc83047_0                       
    cycler:                        0.10.0-py37_0                           
    cython:                        0.29.22-py37h2531618_0                  
    cytoolz:                       0.11.0-py37h7b6447c_0                   
    dask:                          2021.2.0-pyhd3eb1b0_0                   
    dask-core:                     2021.2.0-pyhd3eb1b0_0                   
    dask-jobqueue:                 0.7.0-py_0                              
    dateparser:                    1.0.0-pyhd3eb1b0_0                      
    decorator:                     4.4.2-pyhd3eb1b0_0                      
    defusedxml:                    0.6.0-pyhd3eb1b0_0                      
    distributed:                   2021.2.0-py37h06a4308_0                 
    eccodes:                       2.18.0-hf05d9b7_0            conda-forge
    entrypoints:                   0.3-py37_0                              
    expat:                         2.2.10-he6710b0_2                       
    fasteners:                     0.16-pyhd3eb1b0_0                       
    fiona:                         1.8.17-py37ha3d844c_0        conda-forge
    flufl.lock:                    5.0.3.1-py_0                 octant     
    font-ttf-dejavu-sans-mono:     2.37-h6964260_0                         
    font-ttf-inconsolata:          2.001-hcb22688_0                        
    font-ttf-source-code-pro:      2.030-h7457263_0                        
    font-ttf-ubuntu:               0.83-h8b1ccd4_0                         
    fontconfig:                    2.13.1-hba837de_1004         conda-forge
    fonts-conda-ecosystem:         1-0                          conda-forge
    fonts-conda-forge:             1-0                          conda-forge
    freetype:                      2.10.4-h5ab3b9f_0                       
    freexl:                        1.0.6-h27cfd23_0                        
    fribidi:                       1.0.10-h7b6447c_0                       
    fsspec:                        0.8.3-py_0                              
    future:                        0.18.2-py37_1                           
    gdal:                          3.1.2-py37h4b180d9_0         conda-forge
    gdk-pixbuf:                    2.42.2-h0c95a7a_2            conda-forge
    geco:                          0.6.1b20201113-py37_1        octant     
    geopandas:                     0.8.1-py_0                              
    geos:                          3.8.1-he6710b0_0                        
    geotiff:                       1.6.0-h05acad5_0             conda-forge
    gettext:                       0.19.8.1-h9b4dc7a_1                     
    gflags:                        2.2.2-he6710b0_0                        
    giflib:                        5.2.1-h7b6447c_0                        
    glib:                          2.66.7-h9c3ff4c_1            conda-forge
    glib-tools:                    2.66.7-h9c3ff4c_1            conda-forge
    glog:                          0.4.0-he6710b0_0                        
    gobject-introspection:         1.66.1-py37h94476cb_0                   
    graphite2:                     1.3.14-h23475e2_0                       
    graphviz:                      2.46.1-h93c640b_4            conda-forge
    grpc-cpp:                      1.28.1-h8e748ff_2            conda-forge
    gsl:                           2.4-h14c3975_4                          
    gtk2:                          2.24.33-hab0c2f8_0           conda-forge
    gts:                           0.7.6-h64030ff_2             conda-forge
    harfbuzz:                      2.7.2-ha5b49bf_1             conda-forge
    hdf4:                          4.2.13-h3ca952b_2                       
    hdf5:                          1.10.6-nompi_h3c11f04_101    conda-forge
    heapdict:                      1.0.1-py_0                              
    icu:                           67.1-he1b5a44_0              conda-forge
    idna:                          2.10-pyhd3eb1b0_0                       
    importlib-metadata:            2.0.0-py_1                              
    importlib_metadata:            2.0.0-1                                 
    iniconfig:                     1.1.1-pyhd3eb1b0_0                      
    intel-openmp:                  2020.2-254                              
    ipython:                       7.21.0-py37hb070fc8_0                   
    ipython_genutils:              0.2.0-pyhd3eb1b0_1                      
    jasper:                        1.900.1-hd497a04_4                      
    jedi:                          0.17.2-py37h06a4308_1                   
    jinja2:                        2.11.3-pyhd3eb1b0_0                     
    jpeg:                          9d-h36c2ea0_0                conda-forge
    json-c:                        0.13.1-h1bed415_0                       
    jsonschema:                    3.2.0-py_2                              
    jupyter_client:                6.1.7-py_0                              
    jupyter_core:                  4.7.1-py37h06a4308_0                    
    jupyterlab_pygments:           0.1.2-py_0                              
    kealib:                        1.4.14-he4dc956_1            conda-forge
    kiwisolver:                    1.3.1-py37h2531618_0                    
    krb5:                          1.17.1-h173b8e3_0                       
    lcms2:                         2.11-h396b838_0                         
    ld_impl_linux-64:              2.33.1-h53a641e_7                       
    libaec:                        1.0.4-he6710b0_1                        
    libcurl:                       7.69.1-h20c2e04_0                       
    libdap4:                       3.20.6-h1d1bd15_0            conda-forge
    libedit:                       3.1.20191231-h14c3975_1                 
    libevent:                      2.1.8-h1ba5d50_1                        
    libffi:                        3.3-he6710b0_2                          
    libgcc-ng:                     9.3.0-h2828fa1_18            conda-forge
    libgd:                         2.3.0-h6e6070c_0             conda-forge
    libgdal:                       3.1.2-h6687615_0             conda-forge
    libgfortran-ng:                7.3.0-hdf63c60_0                        
    libglib:                       2.66.7-h3e27bee_1            conda-forge
    libgomp:                       9.3.0-h2828fa1_18            conda-forge
    libiconv:                      1.16-h516909a_0              conda-forge
    libkml:                        1.3.0-hd79254b_1012          conda-forge
    libllvm10:                     10.0.1-hbcb73fb_5                       
    libnetcdf:                     4.7.4-nompi_h84807e1_104     conda-forge
    libpng:                        1.6.37-hbc83047_0                       
    libpq:                         12.3-h255efa7_3              conda-forge
    libprotobuf:                   3.11.4-hd408876_0                       
    librsvg:                       2.50.3-hfa39831_1            conda-forge
    libsodium:                     1.0.18-h7b6447c_0                       
    libspatialindex:               1.9.3-he6710b0_0                        
    libspatialite:                 4.3.0a-h2482549_1038         conda-forge
    libssh2:                       1.9.0-h1ba5d50_1                        
    libstdcxx-ng:                  9.3.0-h6de172a_18            conda-forge
    libthrift:                     0.13.0-hfb8234f_6                       
    libtiff:                       4.1.0-h2733197_1                        
    libtool:                       2.4.6-h7b6447c_1005                     
    libuuid:                       2.32.1-h7f98852_1000         conda-forge
    libwebp:                       1.2.0-h89dd481_0                        
    libwebp-base:                  1.2.0-h27cfd23_0                        
    libxcb:                        1.14-h7b6447c_0                         
    libxml2:                       2.9.10-h68273f3_2            conda-forge
    llvmlite:                      0.34.0-py37h269e1b5_4                   
    locket:                        0.2.1-py37h06a4308_1                    
    lz4-c:                         1.9.2-heb0550a_3                        
    markupsafe:                    1.1.1-py37h14c3975_1                    
    marshmallow:                   3.10.0-pyhd3eb1b0_0                     
    matplotlib:                    3.3.2-0                      conda-forge
    matplotlib-base:               3.3.2-py37h817c723_0                    
    mistune:                       0.8.4-py37h14c3975_1001                 
    mkl:                           2020.2-256                              
    mkl-service:                   2.3.0-py37he8ac12f_0                    
    mkl_fft:                       1.3.0-py37h54f3939_0                    
    mkl_random:                    1.1.1-py37h0573a6f_0                    
    monotonic:                     1.5-py_0                                
    more-itertools:                8.7.0-pyhd3eb1b0_0                      
    msgpack-python:                1.0.2-py37hff7bd54_1                    
    munch:                         2.5.0-py_0                              
    nbclient:                      0.5.3-pyhd3eb1b0_0                      
    nbconvert:                     6.0.7-py37_0                            
    nbformat:                      5.1.2-pyhd3eb1b0_1                      
    ncurses:                       6.2-he6710b0_1                          
    nest-asyncio:                  1.5.1-pyhd3eb1b0_0                      
    netcdf4:                       1.5.6-nompi_py37hdbee05a_100 conda-forge
    ninja:                         1.10.2-py37hff7bd54_0                   
    numba:                         0.51.2-py37h04863e7_1                   
    numba-scipy:                   0.2.0-py_1                   conda-forge
    numcodecs:                     0.7.3-py37h2531618_0                    
    numpy:                         1.19.2-py37h54aff64_0                   
    numpy-base:                    1.19.2-py37hfa32c7d_0                   
    octantng.algo:                 0.14.0-py37hfeaa757_0        octant     
    octantng.algo.geodesic:        0.12.0-py37hfeaa757_0        octant     
    octantng.algo.grids:           0.15.0-py37hfeaa757_0        octant     
    octantng.algo.retracking:      0.11.0-py37hfeaa757_0        octant     
    octantng.core:                 0.20.0-py37hfeaa757_0        octant     
    octantng.data:                 0.4.0-py37hfeaa757_0         octant     
    octantng.data.cls:             0.3.0-py37hfeaa757_0         octant     
    octantng.math:                 0.15.0-py37hfeaa757_0        octant     
    octantng.parameters:           0.20.0-py37hfeaa757_0        octant     
    octantng.programs:             0.12.0-py37hfeaa757_0        octant     
    octantng.storage:              0.13.0-py37hfeaa757_0        octant     
    octantng.utilities:            0.11.0-py37_0                octant     
    octantng.vanilla.core:         0.14.0-py37_0                octant     
    octantng.vanilla.data:         0.12.0-py37hfeaa757_0        octant     
    octantng.vanilla.retracking:   0.10.0-py37hfeaa757_0        octant     
    olefile:                       0.46-py37_0                             
    openjpeg:                      2.3.1-hf7af979_3             conda-forge
    openssl:                       1.1.1j-h27cfd23_0                       
    owslib:                        0.23.0-pyhd3eb1b0_0                     
    packaging:                     20.9-pyhd3eb1b0_0                       
    pandas:                        1.2.3-py37ha9443f7_0                    
    pandoc:                        2.11-hb0f4dca_0                         
    pandocfilters:                 1.4.3-py37h06a4308_1                    
    pango:                         1.42.4-h69149e4_5            conda-forge
    parquet-cpp:                   1.5.1-2                      conda-forge
    parso:                         0.7.0-py_0                              
    partd:                         1.1.0-py_0                              
    pcre:                          8.44-he6710b0_0                         
    pexpect:                       4.8.0-pyhd3eb1b0_3                      
    pickleshare:                   0.7.5-pyhd3eb1b0_1003                   
    pillow:                        8.1.1-py37he98fc37_0                    
    pip:                           21.0.1-py37h06a4308_0                   
    pixman:                        0.40.0-h7b6447c_0                       
    pluggy:                        0.13.1-py37_0                           
    poppler:                       0.89.0-h4190859_0            conda-forge
    poppler-data:                  0.4.10-h06a4308_0                       
    postgresql:                    12.3-hc2f5b80_3              conda-forge
    proj:                          7.0.0-h59a7b90_1                        
    prompt-toolkit:                3.0.8-py_0                              
    psutil:                        5.8.0-py37h27cfd23_1                    
    ptyprocess:                    0.7.0-pyhd3eb1b0_2                      
    py:                            1.10.0-pyhd3eb1b0_0                     
    pyarrow:                       0.17.0-py37h110162e_0        conda-forge
    pybind11:                      2.5.0-py37hfd86e86_0                    
    pycparser:                     2.20-py_2                               
    pyepsg:                        0.4.0-py37_0                            
    pyfes:                         2.9.2-py37h2bc3f7f_1         octant     
    pygments:                      2.8.0-pyhd3eb1b0_0                      
    pygsl:                         2.3.0.1-py37_1               octant     
    pykdtree:                      1.3.4-py37h6323ea4_1002                 
    pyopenssl:                     20.0.1-pyhd3eb1b0_1                     
    pyparsing:                     2.4.7-pyhd3eb1b0_0                      
    pyproj:                        2.6.1.post1-py37h34dd122_0   conda-forge
    pyrsistent:                    0.17.3-py37h7b6447c_0                   
    pyshp:                         2.1.3-pyhd3eb1b0_0                      
    pysocks:                       1.7.1-py37_1                            
    pytest:                        6.2.2-py37h06a4308_2                    
    pytest-cov:                    2.11.1-pyhd3eb1b0_0                     
    pytest-runner:                 5.3.0-pyhd3eb1b0_0                      
    python:                        3.7.10-hdb3f193_0                       
    python-dateutil:               2.8.1-pyhd3eb1b0_0                      
    python_abi:                    3.7-1_cp37m                  conda-forge
    pytz:                          2021.1-pyhd3eb1b0_0                     
    pyyaml:                        5.4.1-py37h27cfd23_1                    
    pyzmq:                         20.0.0-py37h2531618_1                   
    rasterio:                      1.1.7-py37ha3d844c_0         conda-forge
    re2:                           2019.08.01-he6710b0_0                   
    readline:                      8.1-h27cfd23_0                          
    regex:                         2020.11.13-py37h27cfd23_0               
    requests:                      2.25.1-pyhd3eb1b0_0                     
    rtree:                         0.9.4-py37_1                            
    scipy:                         1.6.1-py37h91f5cce_0                    
    setuptools:                    52.0.0-py37h06a4308_0                   
    shapely:                       1.7.1-py37hba0730f_1         conda-forge
    six:                           1.15.0-py37h06a4308_0                   
    snappy:                        1.1.8-he6710b0_0                        
    snuggs:                        1.4.7-py_0                              
    sortedcontainers:              2.3.0-pyhd3eb1b0_0                      
    sqlite:                        3.33.0-h62c20be_0                       
    tatsu:                         4.4.0-py37hc8dfbb8_2         conda-forge
    tbb:                           2020.3-hfd86e86_0                       
    tblib:                         1.7.0-py_0                              
    testpath:                      0.4.4-pyhd3eb1b0_0                      
    thrift-compiler:               0.13.0-hfb8234f_6                       
    thrift-cpp:                    0.13.0-h06a4308_6                       
    tiledb:                        2.0.8-h3effe38_1             conda-forge
    tk:                            8.6.10-hbc83047_0                       
    toml:                          0.10.1-py_0                             
    toolz:                         0.11.1-pyhd3eb1b0_0                     
    tornado:                       6.1-py37h27cfd23_0                      
    tqdm:                          4.56.0-pyhd3eb1b0_0                     
    traitlets:                     5.0.5-pyhd3eb1b0_0                      
    typing_extensions:             3.7.4.3-pyha847dfd_0                    
    tzcode:                        2021a-h7f98852_1             conda-forge
    tzlocal:                       2.1-py37_0                              
    udunits2:                      2.2.27.27-h360fe7b_0         conda-forge
    urllib3:                       1.26.3-pyhd3eb1b0_0                     
    wcwidth:                       0.2.5-py_0                              
    webencodings:                  0.5.1-py37_1                            
    wheel:                         0.36.2-pyhd3eb1b0_0                     
    xarray:                        0.17.0-pyhd3eb1b0_0                     
    xerces-c:                      3.2.3-hfe33f54_1             conda-forge
    xorg-kbproto:                  1.0.7-h7f98852_1002          conda-forge
    xorg-libice:                   1.0.10-h516909a_0            conda-forge
    xorg-libsm:                    1.2.3-h84519dc_1000          conda-forge
    xorg-libx11:                   1.6.12-h516909a_0            conda-forge
    xorg-libxext:                  1.3.4-h516909a_0             conda-forge
    xorg-libxrender:               0.9.10-h516909a_1002         conda-forge
    xorg-renderproto:              0.11.1-h14c3975_1002         conda-forge
    xorg-xextproto:                7.3.0-h7f98852_1002          conda-forge
    xorg-xproto:                   7.0.31-h27cfd23_1007                    
    xz:                            5.2.5-h7b6447c_0                        
    yaml:                          0.2.5-h7b6447c_0                        
    zarr:                          2.6.1-pyhd3eb1b0_0                      
    zeromq:                        4.3.3-he6710b0_3                        
    zict:                          2.0.0-pyhd3eb1b0_0                      
    zipp:                          3.4.0-pyhd3eb1b0_0                      
    zlib:                          1.2.11-h7b6447c_3                       
    zstd:                          1.4.5-h9ceee32_0                        
Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... 
done
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... 
ERROR: Job failed: execution took longer than 24h0m0s seconds

@wolfv
Copy link
Contributor
wolfv commented Mar 4, 2021

@ppoilbarbe you can try using boa, especially the conda mambabuild command that comes with boa. https://github.com/mamba-org/boa

It will definitely fail a long, long time before hitting 24 hours.

Also, I would recommend using strict-channel-priority, and removing defaults if possible. That should help a lot, too. There are some incompatibilities between defaults and conda-forge.

@ppoilbarbe
Copy link

@ppoilbarbe you can try using boa, especially the conda mambabuild command that comes with boa. https://github.com/mamba-org/boa

Thanks... it worked... in less than 10 minutes!

@astrojuanlu
Copy link
Contributor

Wow, from 24 hours to 10 minutes? That's a pretty impressive speedup cc @humitos

@wolfv
Copy link
Contributor
wolfv commented Mar 11, 2021

Cool, that's great to hear!

@mateusz91t
Copy link
mateusz91t commented Jun 23, 2021

Could someone help me with a workaround by mamba? I try to upgrade python 3.8.10 => 3.9.5 in my root environment.
By conda install python=3.9 I had got 50 hours estimated time of examining packages process in my root env...
Then I tried to install it with mamba. I installed mamba:
conda install -c conda-forge mamba
next I updated all packages:
mamba update --all
and clean my root env:
mamba clean --all
and finally I tried to install higher python:
>mamba install python=3.9
but I got:

Looking for: ['python=3.9']

menpo/noarch             [====================] (00m:00s) Done
menpo/win-64             [====================] (00m:00s) Done
pkgs/msys2/win-64        [====================] (00m:00s) Done
conda-forge/noarch       [====================] (00m:02s) Done
pkgs/main/win-64         [====================] (00m:02s) Done
pkgs/msys2/noarch        [====================] (00m:00s) Done
pkgs/main/noarch         [====================] (00m:01s) Done
pkgs/r/win-64            [====================] (00m:00s) Done
pkgs/r/noarch            [====================] (00m:00s) Done
conda-forge/win-64       [====================] (00m:06s) Done
Encountered problems while solving:
  - nothing provides libarchive 3.3.3 h96cdc4e_0 needed by anaconda-2018.12-py27_0

Have someone got a similar problem?

@wolfv
Copy link
Contributor
wolfv commented Jun 23, 2021

@mateusz91t you need to get rid of the Anaconda distribution in your base environment ... it pins too many packages.

It's better to have a small base environment and create new environments for things you want to use. For example, start with mambaforge: https://github.com/conda-forge/miniforge#mambaforge and then create a new environment with all anaconda packages using mamba create -n fullanaconda anaconda and then activate using conda activate fullanaconda.

@mateusz91t
Copy link

@mateusz91t you need to get rid of the Anaconda distribution in your base environment ... it pins too many packages.

It's better to have a small base environment and create new environments for things you want to use. For example, start with mambaforge: https://github.com/conda-forge/miniforge#mambaforge and then create a new environment with all anaconda packages using mamba create -n fullanaconda anaconda and then activate using conda activate fullanaconda.

Thanks @wolfv, your solution solved my problem with python's version, but now I have the same problem with newer version of Spyder ;p
If I try install newer spyder in fullanaconda env I get the same error like before with python 3.9 installation.
If I try install newer spyder in base env I have to install full anaconda packages.

below result from fullanaconda env

(fullanaconda) C:\Users\mattt>mamba list spyder

                  __    __    __    __
                 /  \  /  \  /  \  /  \
                /    \/    \/    \/    \
███████████████/  /██/  /██/  /██/  /████████████████████████
              /  / \   / \   / \   / \  \____
             /  /   \_/   \_/   \_/   \    o \__,
            / _/                       \_____/  `
            |/
        ███╗   ███╗ █████╗ ███╗   ███╗██████╗  █████╗
        ████╗ ████║██╔══██╗████╗ ████║██╔══██╗██╔══██╗
        ██╔████╔██║███████║██╔████╔██║██████╔╝███████║
        ██║╚██╔╝██║██╔══██║██║╚██╔╝██║██╔══██╗██╔══██║
        ██║ ╚═╝ ██║██║  ██║██║ ╚═╝ ██║██████╔╝██║  ██║
        ╚═╝     ╚═╝╚═╝  ╚═╝╚═╝     ╚═╝╚═════╝ ╚═╝  ╚═╝

        mamba (0.14.0) supported by @QuantStack

        GitHub:  https://github.com/mamba-org/mamba
        Twitter: https://twitter.com/QuantStack

█████████████████████████████████████████████████████████████

# packages in environment at D:\programy\miniforge3\envs\fullanaconda:
#
# Name                    Version                   Build  Channel
pyls-spyder               0.3.2              pyhd3eb1b0_0
spyder                    4.2.5            py39haa95532_0
spyder-kernels            1.10.2           py39haa95532_0

(fullanaconda) C:\Users\mattt>mamba install spyder=5

                  __    __    __    __
                 /  \  /  \  /  \  /  \
                /    \/    \/    \/    \
███████████████/  /██/  /██/  /██/  /████████████████████████
              /  / \   / \   / \   / \  \____
             /  /   \_/   \_/   \_/   \    o \__,
            / _/                       \_____/  `
            |/
        ███╗   ███╗ █████╗ ███╗   ███╗██████╗  █████╗
        ████╗ ████║██╔══██╗████╗ ████║██╔══██╗██╔══██╗
        ██╔████╔██║███████║██╔████╔██║██████╔╝███████║
        ██║╚██╔╝██║██╔══██║██║╚██╔╝██║██╔══██╗██╔══██║
        ██║ ╚═╝ ██║██║  ██║██║ ╚═╝ ██║██████╔╝██║  ██║
        ╚═╝     ╚═╝╚═╝  ╚═╝╚═╝     ╚═╝╚═════╝ ╚═╝  ╚═╝

        mamba (0.14.0) supported by @QuantStack

        GitHub:  https://github.com/mamba-org/mamba
        Twitter: https://twitter.com/QuantStack

█████████████████████████████████████████████████████████████


Looking for: ['spyder=5']

conda-forge/win-64       Using cache
conda-forge/noarch       Using cache
pkgs/main/win-64         [====================] (00m:00s) No change
pkgs/main/noarch         [====================] (00m:00s) No change
pkgs/r/win-64            [====================] (00m:00s) No change
pkgs/msys2/win-64        [====================] (00m:00s) No change
pkgs/r/noarch            [====================] (00m:00s) No change
pkgs/msys2/noarch        [====================] (00m:00s) No change
menpo/win-64             [====================] (00m:00s) No change
menpo/noarch             [====================] (00m:00s) No change

Pinned packages:
  - python 3.9.4

Encountered problems while solving:
  - nothing provides libarchive 3.3.3 h96cdc4e_0 needed by anaconda-2018.12-py27_0


(fullanaconda) C:\Users\mattt>

@mfeblowitz
Copy link
mfeblowitz commented Sep 17, 2021

I guess I'm lucky, as I've so far waited about 2 hours for installing pip dependencies. It's performing a very complex creation of a conda env from a mostly unconstrained .yml file. And both tensorflow and pytorch are involved.
I'm using a fairly beefy machine, with 40 cores and 2 gpus. One cpu has been pegged at 95%-100% for the whole time. It would be great if there were any way to have it be multi-threaded...

@abalter
Copy link
abalter commented Sep 17, 2021

The real folks would have a better answer, but I think the problem is that solving the package dependencies is NOT a process that can be multi-threaded---it is a vast network problem.

Downloading will just depend on your bandwidth, and even on my 50 Kb/s home network never makes me wait very long at all. So I doubt there would be much to gain anyway. Besides, the bottleneck is bandwidth/IO.

I suggest you try mamba. The mamba project allows some consistency compromises in favor of a HUGE speedup. Hypothetically you could run into a conflict. I have never had that happen.

@michaelkarlcoleman
Copy link

I'm not "real folks" either, but I think the fundamental issue is that this is a constraint satisfaction problem, and in general, those can take an exponential amount of time to run. (And indeed, running time can vary wildly depending on seemingly insignificant changes in the input.) This implies that multi-threading isn't likely to be much help--one tenth of forever is still forever.

I've hit this occasionally, and what has worked is trying some of the advice on the conda pages. In particular, it helps to prune the set of possibilities being considered. Perhaps you can provide some hints on what you already "know" you want. For example, you might "know" that you prefer a setup based on Python 3.6 or later, even if there is some theoretical combination of packages out there that might seem better to the algorithm, even though they're based on Python 3.1 (or 2.6). Add some constraints and see if it helps.

@xiuliren
Copy link

I still got this issue. This issue is closed. is there any solution here?

@stuarteberg
Copy link
Contributor

@jingpengw One alternative is to use mamba to manage your conda environments.

https://github.com/mamba-org/mamba

@garyfritzz
Copy link

I started fresh: deleted Anaconda & everything. Downloaded & installed fresh Anaconda. Opened the Anaconda terminal and the first command I executed was conda install mamba. It's been running for over 2 hours.

Is this caused by Anaconda loading up everything in the world? Should I install Anaconda (to get all the pkgs installed), then run bare Python, and create a fullanaconda environment to install Anaconda? But I'm not sure how to install Anaconda in an existing environment. Should I dump Anaconda and just install the packages I need?

BTW Anaconda itself seems a bit hosed. In my previous install, and in my new fresh install, it wants to update Anaconda to 2.2.0. Last time I tried this, I let it spin for 12 hours before giving up. Related problem?

@wolfv
Copy link
Contributor
wolfv commented Jul 4, 2022

@garyfritzz I would heavily recommend to start with a smaller distribution, such as Miniforge / Mambaforge: https://github.com/conda-forge/miniforge

@garyfritzz
Copy link

My conda install mamba eventually finished in the middle of the night, but it spit out dozens (hundreds?) of package conflicts. Don't remember seeing that before. And Your installed version is: not available. And my attempt to update Anaconda failed with Cannot update Anaconda Navigator, UnsatisfiableError.

So I think I'm done with Anaconda. I deleted Anaconda and installed Mambaforge. That worked fine, but when I tried to install numpy I got

Preparing transaction: done
Verifying transaction: failed

EnvironmentNotWritableError: The current user does not have write permissions to the target environment.
  environment location: C:\ProgramData\mambaforge

I'm not sure why it wanted to install under C:\ProgramData, but that was the default location.

So I uninstalled it and installed basic Miniforge under C:\. As before, first command I ran was conda install mamba. Instead of the multi-hour disaster I got with Anaconda, this one completed without error in about 30 seconds. That's just a teensy bit better. Thanks for the pointer !!

Question: I hate using the Windoze command prompt for the Miniforge prompt. I have a bash I can use (Rtools bash) or I could find another one. But how do I get the conda envs stuff to work in bash on Windows? Or am I better off to use pip and pipenv?

@michaelkarlcoleman
Copy link

@garyfritzz : At our site, we do a base install of 'miniconda' only. Then, we religiously install packages into conda environments, leaving the base environment completely clean. I think this helps a lot with speeding up the constraint-satisfaction step, as well as making like easier overall.

@garyfritzz
Copy link

@michaelkarlcoleman: Hm OK. I'm still learning how conda works. I had thought I would put my "default" packages in base, and then just add on specific stuff in separate environments. But from what I see, I get the impression it fully installs EVERYthing in each env, not taking advantage of the "default" stuff in base. Well installing miniconda is pretty easy. I can always uninstall it and do the envs right the next time.

@michaelkarlcoleman
Copy link

It's not entirely obvious, but everything in the 'base' (default) environment leaks through to all other environments, at least to a degree. So keeping it small probably saves some grief.

That said, even with this, some combinations of packages take a long time to resolve. I think bioconda is somewhat notorious for this. In these cases, it can sometimes help to limit the versions of some packages, which limits the number of combinations that the constraint solver has to consider. (If you limit too much, though, you can end up with an unsolvable specification.)

@garyfritzz
Copy link

Well all I added to the base env is mamba, jupyterlab, pandas, pandas-datareader, numpy, matplotlib. Hopefully that doesn't overdo it. There were 40 packages after initial install, 196 now ...

@QGB
Copy link
QGB commented Sep 6, 2022

image

@dholth
Copy link
Contributor
dholth commented Apr 12, 2023

In 2023 we have a better story for the Python conda installer. Users can add the conda-libmamba-solver package, we have added parallel package download and extraction, repodata.json parser improvements, and the --experimental=jlap feature that can dramatically reduce the bandwidth needed to fetch index data before choosing which packages to install.

@hemangjoshi37a
Copy link

at this point I have just ditched the conda ecosystem because of extended problems since long time ago. It was nice talking to you all. unsubscribing to this topic. Bye.

@github-actions github-actions bot added the locked [bot] locked due to inactivity label Apr 13, 2024
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Apr 13, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
locked [bot] locked due to inactivity solver pertains to the solver source::community catch-all for issues filed by community members type::feature request for a new feature or capability
Projects
None yet
Development

No branches or pull requests

0