Buat lingkungan conda: "Konflik Ditemukan!" ketika memecahkan lingkungan dan "Menemukan jalur konflik terpendek" berjalan selamanya

12

Saya diberi environment.ubuntu.ymlfile untuk dapat membuat lingkungan conda. Namun, menjalankan conda create env --file environment.ubuntu.ymlsaya mendapatkan output berikut:

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%|
...

The Finding shortest conflict pathberlangsung untuk waktu yang lama - rupanya itu sedang mencoba untuk menyelesaikan beberapa masalah ketergantungan. Berjalan selama 2 jam tidak jelas apakah itu akan berhenti.

Pertanyaan saya adalah: apa yang terjadi di sini dan bisakah saya mempercepat proses ini secara manual, misalnya dengan menghapus dependensi yang tidak perlu? Karena saya tidak menciptakan lingkungan, saya tidak tahu mana yang sebenarnya diperlukan.

Alasan mengapa saya ingin tahu adalah karena memeriksa jalur konflik seperti fontconfig[version='>=2.12.6,<3.0a0']ketika satu dependenciesadalah 2.13.1dan saya telah menginstal melalui2.13.1

Silakan temukan di bawah file .yml untuk referensi.

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
Toivo Säwén
sumber
2
Ya, itu berantakan. Di mana untuk memulai ... Sangat mungkin bahwa sebagian besar ini tidak perlu (Anda pasti tidak perlu saluran cermin China jika Anda tidak di Cina). Saya putus asa karena kami membantu Anda menyelesaikan masalah ini secara langsung. Peluang terbaik Anda adalah jika Anda benar-benar memiliki beberapa basis kode yang Anda coba jalankan. GREP itu untuk laporan impor, kemudian hanya menyimpan apa yang diimpor. Dan jika sesuatu memiliki paket setara di Conda, itu harus benar-benar dipindahkan dari pipbagian, tapi itu hanya praktik yang baik dan tidak begitu banyak bergerak menuju tujuan Anda untuk membuat env dibuat.
merv
@erv saya khawatir bahwa ini adalah jawabannya. Saya hanya ingin tahu mengapa ia memeriksa jalur konflik seperti version='>=2.12.6,<3.0a0'ketika satu dependenciesadalah 2.13.1dan saya telah menginstal melalui conda install fontconfig=2.13.1.
Toivo Säwén
Saya tidak sepenuhnya yakin. Jika saya harus menebak, sepertinya ketika Conda memasuki mode resolusi konflik, ia memperlakukan spesifikasi eksplisit fontconfig=2.13.1hanya sebagai kendala lain, bersama dengan mereka yang datang dari semua paket yang memilikinya sebagai dependensi (misalnya, fontconfig[version='>=2.12.6,<3.0a0']) dan kemudian mencoba untuk menemukan persimpangan. Mungkin hanya tidak menyadari bahwa karena semua spesifikasi Anda secara eksplisit turun ke build, sebenarnya tidak ada ruang gerak.
merv

Jawaban:

7

Kesalahan ini dan perilaku selanjutnya sangat mungkin berasal dari bug Anaconda yang dari waktu ke waktu menyebabkan ketidakkonsistenan di lingkungan lokal. Pada 26 Jan, 2020 bug belum terselesaikan.

Bagi saya masalah yang sama terwujud sangat dalam di Mac.

mahasiswa
sumber
3

Secara umum, jawaban untuk pertanyaan ini adalah Anda harus membuat .yml Anda dari tangan dengan awal, hanya dengan saluran dan batasan yang diperlukan. Anda harus mengendurkan batasan versi sehingga hanya terlihat seperti 1,19 alih-alih 1,19.10

Namun, meskipun mengikuti saran ini, saya hampir memiliki masalah Anda sekarang. Itu menghabiskan berjam-jam di fontconfig dan saya meninggalkannya semalaman sebelum menyerah. Spesifikasi saya cukup sederhana:

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

Saya akan mengedit ini ketika saya mengetahuinya.

EDIT: Masalah ini sedang dibahas di sini (khusus untuk perangkat lunak yang saya coba siapkan, mungkin tidak membantu orang lain) https://github.com/USGS-Astrogeology/ISIS3/issues/3570

foobarbecue
sumber
1

Dalam kasus saya, saya telah mengganti beberapa versi build ( ...=he4413a7_1000bagian) seperti yang ada di file asli telah dilabel ulang seperti brokenpada conda-forge. Namun, meskipun nomor versi tidak berubah untuk dependensi ini, subdependensi mereka telah berubah, menyebabkan semua konflik ini. Intinya adalah: jangan main-main dengan dependensi secara manual.

Saya memecahkan masalah dengan menjaga spesifikasi versi build asli, dan menambahkan conda-forge/labels/brokenke channelsbagian .ymlfile.

Toivo Säwén
sumber
0

Saya juga dihadapkan dengan masalah yang sama pada windows 10, menggunakan pycharm dengan anaconda (python 3.7) build terbaru pada 17 Februari.2020. Anehnya, mengaktifkan "use conda package manager" pada halaman penerjemah proyek di pengaturan pycharm memungkinkan saya untuk memperbarui numpy dan menginstal paket secara normal. Coba instal paket tanpa manajer paket conda dan dengan manajer paket conda. Semoga berhasil!

Frozenranger
sumber
-1

Saya telah menemukan masalah ini dan menyelesaikannya. Pertama, saya membuat versi anaconda saya agar konsisten dengan tempat ekspor file yaml. Ini mungkin tidak berguna tetapi saya menganggap bahwa versi conda yang konsisten dapat menjanjikan lingkungan basis yang konsisten. Kedua, saya menghapus semua dependensi tetapi beberapa paket 'utama' yang sebenarnya ingin saya gunakan dalam file yaml saya. Itu berarti biarkan paket 'utama' ini menangani masalah ketergantungan.

valax
sumber
-1

Bagi saya menambahkan berikut ini ke file yaml bekerja:

channels:
  - conda-forge
  - defaults
  - conda-forge/label/broken
Frank Tap
sumber
Saya sudah menulis ini di jawaban lain?
Toivo Säwén
Maaf, Anda benar
Frank Tap
-2

Bagi saya bekerja paling baik untuk dilakukan:

which python (Mengkonfirmasi bahwa itu ada di tempat anaconda3)

python --version
conda search "^python$"

Perhatikan versi mana yang cocok dengan versi (di sini 3.7.3) yang digunakan untuk Anaconda (karena saya membuat lingkungan baru, masuk akal bahwa saya bisa menggunakan versi Python yang sama dengan yang digunakan Anaconda sendiri). Perhatikan bahwa daftar saya dari saluran conda (pencarian conda di atas) hanya memperlihatkan satu baris 3.7.3.

Kemudian lakukan ini:

conda create -n myenv python=3.7.3 anaconda

Butuh sekitar 1 menit untuk menjalankan perintah terakhir :)

Cameron Tully-Smith
sumber