conda-forge / gdstk-feedstock

A conda-smithy repository for gdstk.
BSD 3-Clause "New" or "Revised" License
4 stars 3 forks source link

Incompatibility of gdstk from conda-forge with the Anaconda distribution #9

Open worldsheep opened 3 years ago

worldsheep commented 3 years ago

Issue:

I tried to install gdstk following the instructions in: https://github.com/conda-forge/gdstk-feedstock but I get the following message in my terminal:

conda install gdstk
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: | 
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
Examining conflict for bleach sphinx dask distributed nbconvert _ipyw_jlab_nb_ext_conf pytest jupyterlab astropy numpydoc pip wheel spyd-

The examining conflict part is taking forever and I ended up aborting. Has anyone encountered the same problem?

I have just installed anaconda and I am running version: 1.10.0


Environment (conda list):

``` $ conda list ```


Details about conda and system ( conda info ):

``` $ conda info ```
wshanks commented 3 years ago

conda-forge generally does not work well with the Anaconda packages, though I am surprised the experience is as poor as you see. conda-forge has many packages and many versions of those packages, and the Anaconda base environment comes with many packages. conda gets bogged down trying to satisfy the dependency constraints of all those packages. Also, some of the conda-forge packages conflict with the Anaconda ones and that may be affecting what you see (conda-forge builds numpy against a different linear algebra library than Anaconda does, for example).

If you don't need access to everything in the base Anaconda environment, you can create a new environment with gdtk in it and conda should be able to solve for it more easily. For example, you could do:

conda create --name gdstk_env --channel conda-forge gdstk

to create a new environment named gdstk_env with gdstk installed in it. You can see an overview of working with different environments here.

One other tip about the conda solver -- in my experience it works best when initially creating the environment. So it solves for the package version more quickly if you conda create with all the package names, rather than conda create with one package and then conda install the others one by one.

Another thing to consider is using mamba instead of conda. You install it into your conda environment and use it on the command line of using conda (so mamba install -c conda-forge gdstk). In my experience, it is much faster than conda when solving for dependencies in a large environment.

wshanks commented 3 years ago

Also, see #2 which was a similar issue.

worldsheep commented 3 years ago

What do you mean not having access to base anaconda environment? I code in Spyder and I use quite some libraries: numpy, pandas, rand,...

I am quite new to the python world and to conda forge. I'll take some time to read what a conda environment is and what mamba does!

wshanks commented 3 years ago

What do you mean not having access to base anaconda environment? I code in Spyder and I use quite some libraries: numpy, pandas, rand,...

I meant that if you were just using the Anaconda installer to get access to conda to install gdstk and did not need to use all the other libraries that come with Anaconda that you could create a new environment with just gdstk.

I am quite new to the python world and to conda forge.

Anaconda is a company that has employees who maintain the conda project and a set of packages for popular data science libraries. Anaconda provides hosting for the packages. conda-forge is a community-run project that builds many open source libraries as conda packages. It uses the free CI services from GitHub and other companies to run the package builds and uploads the packages to Anaconda's servers for hosting. So with Anaconda you have the backing of a company but fewer packages and updates. Also, there are some technical differences, like Anaconda builds numpy with the Intel Math Kernel Library which is proprietary but free to distribute while conda-forge builds numpy with the open source OpenBLAS library instead. This particular difference makes it hard to mix packages between the two channels (default and conda-forge) because many things build against numpy (like gdstk).

I think pretty much everything open source in Anaconda is available in conda-forge. So you could build an environment with conda-forge packages if you like, like conda create --name gdstk_env gdstk numpy pandas spyder rand (or use mamba). You can also put all the packages in an environment file instead of putting them on a single command line and use conda env create or mamba env create.