0

I'm creating Conda create environment from yml I generated on Windows' Miniconda install. I need to create same environment on OS X. Following the advise found here on SO I used the --no-builds option.

Also, the names of some packages under section ResolvePackageNotFound are clearly (many if not all) specific to Windows:

  - m2w64-gmp=6.1.0
  - m2w64-gcc-libs-core=5.3.0
  - m2w64-gcc-libs=5.3.0
  - vc=14.1
  - vs2015_runtime=15.5.2
  - msys2-conda-epoch=20160418
  - menuinst=1.4.14
  - icc_rt=2019.0.0
  - m2w64-libwinpthread-git=5.0.0.4634.697f757
  - pywinpty=0.5.5
  - wincertstore=0.2
  - m2w64-gcc-libgfortran=5.3.0
  - win_inet_pton=1.1.0
  - winpty=0.4.3

I removed all of these from the yml file. Even then it's stalled at the following screen:

(base) MacBook-Air:Anaconda.d xtian$ conda env create -f 32b-qb-2019-10-05.yml 
Collecting package metadata (repodata.json): done
Solving environment: \ 
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abor| 
Examining openssl:  10%|█████████▍                                                                                 | 29/279 [00:00<00:00, 3729.87it- ]
Comparing specs that have this dependency:  16%|██████████▉                                                          | 16/101 [05:53<31:19, 22.11s/it]
Finding shortest conflict path for openssl[version='>=1.0.2p,<1.0.3a']:  38%|███████████████▊                          | 6/16 [02:39<06:23, 38.32s/it]

This process is progressing at an astonishingly slow pace, and hasn't got past openssl ... 29/279. Should I wait and trust Conda can figure this all out?

Or,

Do I need another strategy-- I'm wondering if I can't remove the offending packages, each in turn, and create a series of yml files to install in order using, $ conda env update --prefix ./env --file environment.yml --prune, because whatever finally works here I know I'm going to need to use it on another machine so I can share the project env with a colleague.

Any other suggestions?

xtian
  • 2,765
  • 7
  • 38
  • 65
  • I would try making a YAML using `conda env export --from-history` and then delete everything in the first YAML (with `--no-builds`) that isn't in this. This is obviously less stringent in ensuring that dependencies use similar versions, but this would at least match all the packages you explicitly requested. – merv Oct 07 '19 at 15:35

2 Answers2

0

Short answer: Try deleting the packages that your system is getting stuck on from the .yml file. i.e., remove "openssl" from .yml file.

I have been running into the same issue trying to install a .yml file created in a Windows system to a Mac system. I basically followed the same procedure you did:

-Created yml file using the --no-builds option.

-Attempted to create environment on Mac system and had several windows specific packages left under ResolvePackageNotFound section (listed below)

  • m2w64-libwinpthread-git=5.0.0.4634.697f757
  • pyreadline=2.1
  • pywinpty=0.5.5
  • m2w64-gcc-libgfortran=5.3.0
  • vc=14
  • m2w64-gcc-libs-core=5.3.0
  • m2w64-gmp=6.1.0
  • wincertstore=0.2
  • icc_rt=2019.0.0
  • m2w64-gcc-libs=5.3.0
  • vs2015_runtime=14.15.26706
  • winpty=0.4.3
  • msys2-conda-epoch=20160418

-Deleted those from the yml file

-Attempted to create environment from updated yml file and received the following conflicts: - Found conflicts! Looking for incompatible packages.

My system also got stuck trying to solve the "openssl" conflict along with a "_tflow_select". I ended up deleting those and was able to create my environment and run the code without too much trouble.

Antz
  • 1
0

This is a late answer, but thought I'd put the solution I used here...

The below outputs a yml, of --from-hist but with versions.

Create 2 yml files:

conda env export --from-hist --no-build > fromHist.yml

conda env export --no-build > full.yml

The using the shell (I used zsh), run:

IFS=$'\n'; rm crossPlatform.yml; for full in $(cat full.yml); do for hist in $(cat fromHist.yml); do echo $full | sed -n -e "s#(${hist}.*)#\1#p" >> crossPlatform.yml; done; done

This is not perfect (e.g. jupyterlab caused all dependancies beginning with this string to be included in the output yml), but much easier than trying to remove all incompatible.