Crea un ambiente conda: "Trovati conflitti!" quando si risolve l'ambiente e “Trovare il percorso di conflitto più breve” è in esecuzione per sempre


12

Mi è stato fornito un environment.ubuntu.ymlfile per poter creare un ambiente conda. Tuttavia, in esecuzione conda create env --file environment.ubuntu.ymlottengo il seguente output:

conda env create --file environment.ubuntu.yml
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 fontconfig:   5%|▉                 | 10/202 [00:00<00:00, 5393.91it/ ]
Comparing specs that have this dependency:   0%|         | 0/12 [00:00<?, ?it/s]
Finding shortest confli|  path for fontconfig==2.13.1=he4413a7_1000:  12%|▏| 1/8
Finding shortest conflict path for fontconfig==2.13.1=he4413a7_1000:  25%|▎| 2/8
Finding shortest conflict pa/  for fontconfig[version='>=2.13.0,<3.0a0']:  25%|
Finding shortest conflict path for fontconfig[version='>=2.13.0,<3.0a0']:  38%|
Finding shortest conf- ct path for fontconfig[version='>=2.11.1']:  38%|▍| 3/8 [
Finding shortest conflict path for fontconfig[version='>=2.11.1']:  50%|▌| 4/8 [
Finding shortest conflict pa|  for fontconfig[version='>=2.12.4,<3.0a0']:  50%|
...

Il processo Finding shortest conflict pathdura da molto tempo - a quanto pare sta cercando di risolvere alcuni problemi di dipendenza. Funzionando per 2 ore non è chiaro se si fermerà mai.

La mia domanda è: cosa sta succedendo qui e posso in qualche modo accelerare manualmente questo processo, ad esempio rimuovendo dipendenze non necessarie? Dal momento che non ho creato l'ambiente, non so quali siano effettivamente necessari.

Il motivo per cui sono curioso è perché sta controllando i percorsi di conflitto come fontconfig[version='>=2.12.6,<3.0a0']quando quello in dependenciesè 2.13.1e l'ho installato attraverso2.13.1

Di seguito puoi trovare il file .yml come riferimento.

name: cea
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - dlr-sc
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - conda-forge
  - conda-forge/label/gcc7
  - defaults
dependencies:
  - attrs=19.1.0=py_0
  - backports=1.0=py_2
  - backports.functools_lru_cache=1.5=py_1
  - backports_abc=0.5=py_1
  - boost-cpp=1.68.0=h11c811c_1000
  - bzip2=1.0.6=h14c3975_1002
  - ca-certificates=2019.3.9=hecc5488_0
  - cairo=1.14.12=h80bd089_1005
  - certifi=2019.3.9=py27_0
  - click=7.0=py_0
  - click-plugins=1.0.4=py_0
  - cligj=0.5.0=py_0
  - curl=7.64.1=hf8cf82a_0
  - cycler=0.10.0=py_1
  - descartes=1.1.0=py_2
  - enum34=1.1.6=py27_1001
  - expat=2.2.5=hf484d3e_1002
  - fiona=1.8.6=py27hf242f0b_2
  - fontconfig=2.13.1=he4413a7_1000
  - freetype=2.10.0=he983fc9_0
  - freexl=1.0.5=h14c3975_1002
  - functools32=3.2.3.2=py_3
  - futures=3.2.0=py27_1000
  - gdal=2.4.1=py27h5f563d9_8
  - geopandas=0.4.1=py_1
  - geos=3.7.1=hf484d3e_1000
  - geotiff=1.4.3=h1105359_1000
  - gettext=0.19.8.1=hc5be6a0_1002
  - giflib=5.1.7=h516909a_1
  - glib=2.56.2=had28632_1001
  - hdf4=4.2.13=h9a582f1_1002
  - hdf5=1.10.4=nompi_h3c11f04_1106
  - icu=58.2=hf484d3e_1000
  - jpeg=9c=h14c3975_1001
  - json-c=0.13.1=h14c3975_1001
  - kealib=1.4.10=h1978553_1003
  - kiwisolver=1.0.1=py27h6bb024c_1002
  - krb5=1.16.3=h05b26f9_1001
  - libblas=3.8.0=4_openblas
  - libcblas=3.8.0=4_openblas
  - libcurl=7.64.1=hda55be3_0
  - libdap4=3.19.1=hd48c02d_1000
  - libedit=3.1.20170329=hf8c457e_1001
  - libffi=3.2.1=he1b5a44_1006
  - libgdal=2.4.1=heae24aa_8
  - libiconv=1.15=h516909a_1005
  - libkml=1.3.0=h328b03d_1009
  - liblapack=3.8.0=4_openblas
  - libnetcdf=4.6.2=hbdf4f91_1001
  - libpng=1.6.36=h84994c4_1000
  - libpq=11.2=h4770945_0
  - libspatialindex=1.9.0=he1b5a44_0
  - libspatialite=4.3.0a=hb5ec416_1026
  - libssh2=1.8.2=h22169c7_2
  - libtiff=4.0.10=h648cc4a_1001
  - libuuid=2.32.1=h14c3975_1000
  - libxcb=1.13=h14c3975_1002
  - libxml2=2.9.8=h143f9aa_1005
  - mapclassify=1.0.1=py27_1
  - matplotlib=2.2.3=py27h8a2030e_1
  - matplotlib-base=2.2.3=py27h60b886d_1
  - munch=2.3.2=py_0
  - ncurses=6.1=hf484d3e_1002
  - numpy=1.16.2=py27h8b7e671_1
  - openblas=0.3.5=h9ac9557_1001
  - openjpeg=2.3.0=hf38bd82_1003
  - openssl=1.1.1b=h14c3975_1
  - pandas=0.24.2=py27hf484d3e_0
  - pip=19.0.3=py27_0
  - pixman=0.34.0=h14c3975_1003
  - poppler=0.67.0=h2fc8fa2_1002
  - poppler-data=0.4.9=1
  - postgresql=11.2=h61314c7_0
  - proj4=5.2.0=h14c3975_1001
  - pthread-stubs=0.4=h14c3975_1001
  - pyparsing=2.3.1=py_0
  - pyproj=1.9.6=py27hc0953d3_1000
  - pyqt=5.6.0=py27h13b7fb3_1008
  - python=2.7.15=h721da81_1008
  - python-dateutil=2.8.0=py_0
  - pytz=2018.9=py_0
  - readline=7.0=hf8c457e_1001
  - rtree=0.8.3=py27h666c49c_1002
  - scipy=1.2.1=py27h09a28d5_1
  - setuptools=40.8.0=py27_0
  - shapely=1.6.4=py27h2afed24_1003
  - singledispatch=3.4.0.3=py27_1000
  - sip=4.18.1=py27hf484d3e_1000
  - six=1.12.0=py27_1000
  - sqlite=3.26.0=h67949de_1001
  - subprocess32=3.5.3=py27h14c3975_0
  - tbb=2019.5=hc9558a2_0
  - tk=8.6.9=h84994c4_1001
  - tornado=5.1.1=py27h14c3975_1000
  - tzcode=2018g=h14c3975_1001
  - wheel=0.33.1=py27_0
  - xerces-c=3.2.2=hac72e42_1001
  - xorg-kbproto=1.0.7=h14c3975_1002
  - xorg-libice=1.0.9=h516909a_1004
  - xorg-libsm=1.2.3=h84519dc_1000
  - xorg-libx11=1.6.7=h14c3975_1000
  - xorg-libxau=1.0.9=h14c3975_0
  - xorg-libxdmcp=1.1.3=h516909a_0
  - xorg-libxext=1.3.4=h516909a_0
  - xorg-libxrender=0.9.10=h516909a_1002
  - xorg-renderproto=0.11.1=h14c3975_1002
  - xorg-xextproto=7.3.0=h14c3975_1002
  - xorg-xproto=7.0.31=h14c3975_1007
  - xz=5.2.4=h14c3975_1001
  - zlib=1.2.11=h14c3975_1004
  - freeimageplus=3.18.0=hf484d3e_2
  - gl2ps=1.3.8=h14c3975_4
  - oce=0.17.2=h6bb024c_10
  - pythonocc-core=0.17=py27_1
  - mkl=2017.0.3=0
  - mkl-service=1.1.2=py27_3
  - dbus=1.13.2=h714fa37_1
  - gst-plugins-base=1.14.0=hbbd80ab_1
  - gstreamer=1.14.0=hb453b48_1
  - libgcc-ng=8.2.0=hdf63c60_1
  - libgfortran-ng=7.3.0=hdf63c60_0
  - libstdcxx-ng=8.2.0=hdf63c60_1
  - pcre=8.43=he6710b0_0
  - qt=5.6.3=h8bf5577_3
  - pip:
    - alabaster==0.7.12
    - babel==2.6.0
    - backports.shutil-get-terminal-size==1.0.0
    - bleach==3.1.0
    - chardet==3.0.4
    - cloudpickle==0.8.1
    - configparser==3.7.4
    - cvxopt==1.2.3
    - decorator==4.4.0
    - defusedxml==0.5.0
    - docutils==0.14
    - doit==0.29.0
    - entrypoints==0.3
    - ephem==3.7.6.0
    - funcsigs==1.0.2
    - h5py==2.9.0
    - idna==2.8
    - imagesize==1.1.0
    - importlib-resources==1.0.2
    - ipaddress==1.0.22
    - ipykernel==4.10.0
    - ipython==5.8.0
    - ipython-genutils==0.2.0
    - ipywidgets==7.4.2
    - jinja2==2.10
    - joblib==0.12.5
    - jsonschema==3.0.1
    - jupyter==1.0.0
    - jupyter-client==5.2.4
    - jupyter-console==5.2.0
    - jupyter-core==4.4.0
    - llvmlite==0.28.0
    - lxml==4.3.3
    - markupsafe==1.1.1
    - mistune==0.8.4
    - mock==2.0.0
    - nbconvert==5.4.1
    - nbformat==4.4.0
    - networkx==2.2
    - notebook==5.7.8
    - numba==0.43.1
    - packaging==19.0
    - pandocfilters==1.4.2
    - pathlib2==2.3.3
    - patsy==0.5.1
    - pbr==5.1.3
    - pexpect==4.6.0
    - pickleshare==0.7.5
    - pkginfo==1.5.0.1
    - plotly==3.7.1
    - prometheus-client==0.6.0
    - prompt-toolkit==1.0.15
    - ptyprocess==0.6.0
    - py4design==0.27
    - pycollada==0.6
    - pygments==2.3.1
    - pyinotify==0.9.6
    - pymc3==3.6
    - pymf==0.1.9
    - pyrsistent==0.14.11
    - pysal==1.14.4.post2
    - pyshp==2.1.0
    - pyyaml==5.1
    - pyzmq==18.0.1
    - qtconsole==4.4.3
    - readme-renderer==24.0
    - requests==2.21.0
    - requests-toolbelt==0.9.1
    - retrying==1.3.3
    - salib==1.2
    - scandir==1.10.0
    - scikit-learn==0.20.3
    - seaborn==0.9.0
    - send2trash==1.5.0
    - simplegeneric==0.8.1
    - snowballstemmer==1.2.1
    - sphinx==1.8.5
    - sphinxcontrib-websupport==1.1.0
    - terminado==0.8.2
    - testpath==0.4.2
    - theano==1.0.4
    - timezonefinder==4.0.1
    - tqdm==4.31.1
    - traitlets==4.3.2
    - twine==1.13.0
    - typing==3.6.6
    - urllib3==1.24.1
    - utm==0.4.2
    - wcwidth==0.1.7
    - webencodings==0.5.1
    - widgetsnbextension==3.4.2
    - xlrd==1.2.0
    - xlwt==1.3.0
    - deap==1.3.0

2
Sì, è un casino. Da dove iniziare ... È molto probabile che gran parte di questo non sia necessario (sicuramente non hai bisogno di quei canali mirror cinesi se non sei in Cina). Dispero per noi che ti aiutiamo a risolvere questo problema direttamente. La tua migliore possibilità è se hai effettivamente una base di codice che stai cercando di eseguire. GREP che per le dichiarazioni di importazione, quindi conservare solo ciò che viene importato. E se qualcosa ha un pacchetto equivalente in Conda, dovrebbe davvero essere spostato dalla pipsezione, ma è solo una buona pratica e non tanto spostarsi verso il tuo obiettivo di creare l'ENV.
Merv

@merv Ero preoccupato che questa fosse la risposta. Sono solo curioso di sapere perché sta controllando i percorsi di conflitto come version='>=2.12.6,<3.0a0'quando quello in dependenciesè 2.13.1e l'ho installato attraverso conda install fontconfig=2.13.1.
Toivo Säwén,

Non ne sono del tutto sicuro. Se dovessi indovinare, sembra che quando Conda entra in modalità di risoluzione dei conflitti considera le specifiche esplicite fontconfig=2.13.1come solo un altro vincolo, insieme a quelle che provengono da tutti i pacchetti che hanno come dipendenza (ad esempio, fontconfig[version='>=2.12.6,<3.0a0']) e quindi cerca di trovare l'intersezione. Forse non si rende conto che poiché tutte le tue specifiche sono esplicite fino alla build, in realtà non c'è spazio di manovra.
Merv

Risposte:


7

Questo errore e il comportamento successivo provengono molto probabilmente dal bug Anaconda che di volta in volta causa incoerenze nell'ambiente locale. Al 26 gennaio 2020 il bug non era ancora stato risolto.

Per me lo stesso problema si manifesta profondamente su Mac.


3

In generale, la risposta a questa domanda è che dovresti creare il tuo .yml da zero a mano, con solo i canali e i vincoli richiesti. Dovresti rilassare i vincoli di versione in modo che appaiano solo come 1.19 anziché 1.19.10

Tuttavia, nonostante segua questo consiglio, ho quasi esattamente il tuo problema in questo momento. Trascorse molte ore su fontconfig e l'ho lasciato durante la notte prima di arrendermi. Le mie specifiche sono piuttosto semplici:

channels:
  - conda-forge
  - usgs-astrogeology
  - defaults
dependencies:
  - python=3.6
  - isis3
  - gdal=2.3

Lo modificherò quando lo capirò.

EDIT: questo problema è in discussione qui (specifico per il software che stavo cercando di installare, probabilmente non utile per gli altri) https://github.com/USGS-Astrogeology/ISIS3/issues/3570


1

Nel mio caso, avevo sostituito alcune delle versioni di build (la ...=he4413a7_1000parte) in quanto quelle nel file originale erano state rietichettate come brokensu conda-forge. Tuttavia, anche se il numero di versione non era cambiato per queste dipendenze, le loro sottodipendenze erano cambiate, causando tutti questi conflitti. La linea di fondo è: non scherzare con le dipendenze manualmente.

Ho risolto il problema mantenendo le specifiche della versione di build originale e aggiungendole conda-forge/labels/brokenalla channelsparte del .ymlfile.


0

Ho anche avuto lo stesso problema su Windows 10, usando Pycharm con Anaconda (Python 3.7) di ultima generazione a partire da feb 17,2020. Stranamente attivare / disattivare "usa conda package manager" nella pagina dell'interprete del progetto nelle impostazioni di pycharm mi ha permesso di aggiornare numpy e installare i pacchetti normalmente. Prova a installare un pacchetto senza il gestore pacchetti conda e con il gestore pacchetti conda. In bocca al lupo!


-1

Ho riscontrato questo problema e risolto. In primo luogo, ho reso la mia versione anaconda coerente con la provenienza del file yaml. Questo può essere inutile ma ritengo che una versione conda coerente possa promettere un ambiente di base coerente. In secondo luogo, ho eliminato tutte le dipendenze, ma alcuni pacchetti "principali" che in realtà voglio usare nel mio file yaml. Ciò significa che questi pacchetti "principali" gestiscono i problemi di dipendenza.


-1

Per me l'aggiunta di quanto segue al file yaml ha funzionato:

channels:
  - conda-forge
  - defaults
  - conda-forge/label/broken

Ho già scritto questo in un'altra risposta?
Toivo Säwén,

Mi dispiace, hai ragione
Frank Tap il

-2

Per me ha funzionato meglio per fare:

which python (confermando che era nel cestino anaconda3)

python --version
conda search "^python$"

Nota quale versione corrisponde alla versione (qui 3.7.3) in uso per Anaconda (dal momento che sto creando un nuovo ambiente, è ovvio che potrei usare la stessa versione di Python che Anaconda stessa sta usando). Nota che il mio elenco dai canali conda (ricerca conda sopra) ha mostrato solo una riga 3.7.3.

Quindi fai questo:

conda create -n myenv python=3.7.3 anaconda

Ci sono voluti circa 1 minuto per eseguire l'ultimo comando :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.