Resisting python package updates

when my working conda env is no longer
Python
Author

jk

Published

July 28, 2025

The “problem” in a nutshell

The problem in detail

I ran into a funny error while trying to save a Visium spatial data to disk. adata_vis.write("adata_vis.h5ad") would return ValueError: Forward slashes are not allowed in keys. This is funny because I previously saved plenty of other files with forward slashes in adata_vis.obs column names. Why now? After faffing around I vaguely remembered I messed around with re-installing some packages in my conda environment earlier. Finally found a breaking change in anndata version 0.12.1 released on July 23rd, 2025, disallowing forward slashes in keys for writing. I’m sure it’s been done for good reasons, but I’m not keen on updating all slashes into dashes in my figures… To revert my conda environment back to its working state, I also had to complete two side quests: re-installing numpy and numcodecs to 1.26.4 and 0.15.1, respectively. A part of the problem could be that I’m using pip to install packages in a conda environment. I’m just used to conda, but some packages only ship with pip.

The solution

None of this is a problem as long as I save package versions (both conda and pip).

conda env export > ./scvi-tools.yml
pip freeze > ./scvi-tools.txt
scvi-tools.yml

name: scvi-tools
channels:
  - defaults
  - conda-forge
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
dependencies:
  - anyio=4.8.0=pyhd8ed1ab_0
  - aom=3.9.1=h7bae524_0
  - appnope=0.1.4=pyhd8ed1ab_1
  - argon2-cffi=23.1.0=pyhd8ed1ab_1
  - argon2-cffi-bindings=21.2.0=py312h024a12e_5
  - arpack=3.9.1=nompi_h593882a_101
  - arrow=1.3.0=pyhd8ed1ab_1
  - asttokens=3.0.0=pyhd8ed1ab_1
  - async-lru=2.0.4=pyhd8ed1ab_1
  - aws-c-auth=0.8.1=hfc2798a_0
  - aws-c-cal=0.8.1=hc8a0bd2_3
  - aws-c-common=0.10.6=h5505292_0
  - aws-c-compression=0.3.0=hc8a0bd2_5
  - aws-c-event-stream=0.5.0=h54f970a_11
  - aws-c-http=0.9.2=h96aa502_4
  - aws-c-io=0.15.3=haba67d1_6
  - aws-c-mqtt=0.11.0=h24f418c_12
  - aws-c-s3=0.7.9=hf37e03c_1
  - aws-c-sdkutils=0.2.2=hc8a0bd2_0
  - aws-checksums=0.2.2=hc8a0bd2_4
  - aws-crt-cpp=0.29.9=ha81f72f_2
  - aws-sdk-cpp=1.11.489=h0e5014b_0
  - azure-core-cpp=1.14.0=hd50102c_0
  - azure-identity-cpp=1.10.0=hc602bab_0
  - azure-storage-blobs-cpp=12.13.0=h7585a09_1
  - azure-storage-common-cpp=12.8.0=h9ca1f76_1
  - azure-storage-files-datalake-cpp=12.12.0=hcdd55da_1
  - babel=2.16.0=pyhd8ed1ab_1
  - beautifulsoup4=4.12.3=pyha770c72_1
  - bleach=6.2.0=pyh29332c3_4
  - bleach-with-css=6.2.0=h82add2a_4
  - blosc=1.21.6=h7dd00d9_1
  - bokeh=3.6.2=pyhd8ed1ab_1
  - branca=0.8.1=pyhd8ed1ab_0
  - brotli=1.1.0=hd74edd7_2
  - brotli-bin=1.1.0=hd74edd7_2
  - brotli-python=1.0.9=py312h313beb8_9
  - bzip2=1.0.8=h99b78c6_7
  - c-ares=1.34.4=h5505292_0
  - ca-certificates=2025.2.25=hca03da5_0
  - cached-property=1.5.2=hd8ed1ab_1
  - cached_property=1.5.2=pyha770c72_1
  - cffi=1.17.1=py312h0fad829_0
  - cloudpickle=3.1.1=pyhd8ed1ab_0
  - colorama=0.4.6=pyhd8ed1ab_1
  - colorcet=3.1.0=pyhd8ed1ab_1
  - comm=0.2.2=pyhd8ed1ab_1
  - cpython=3.12.8=py312hd8ed1ab_1
  - cycler=0.12.1=pyhd8ed1ab_1
  - cytoolz=1.0.1=py312hea69d52_0
  - dask=2024.11.2=pyhff2d567_1
  - dask-core=2024.11.2=pyhff2d567_1
  - dask-expr=1.1.19=pyhd8ed1ab_0
  - dask-image=2024.5.3=pyhd8ed1ab_0
  - dav1d=1.2.1=hb547adb_0
  - debugpy=1.8.12=py312hd8f9ff3_0
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - deprecated=1.2.18=pyhd8ed1ab_0
  - distributed=2024.11.2=pyhff2d567_1
  - entrypoints=0.4=pyhd8ed1ab_1
  - et_xmlfile=2.0.0=pyhd8ed1ab_1
  - exceptiongroup=1.2.2=pyhd8ed1ab_1
  - executing=2.1.0=pyhd8ed1ab_1
  - fasteners=0.19=pyhd8ed1ab_1
  - folium=0.19.4=pyhd8ed1ab_0
  - fqdn=1.5.1=pyhd8ed1ab_1
  - freetype=2.12.1=hadb7bae_2
  - freexl=2.0.0=h3ab3353_2
  - geos=3.13.0=hf9b8971_0
  - geotiff=1.7.3=h82bf549_3
  - gflags=2.2.2=hf9b8971_1005
  - giflib=5.2.2=h80987f9_0
  - glog=0.7.1=heb240a5_0
  - glpk=5.0=h6d7a090_0
  - gmp=6.3.0=h7bae524_2
  - gmpy2=2.1.5=py312h524cf62_3
  - h11=0.14.0=pyhd8ed1ab_1
  - h2=4.1.0=pyhd8ed1ab_1
  - hdf5=1.14.4=nompi_ha698983_104
  - hpack=4.1.0=pyhd8ed1ab_0
  - httpcore=1.0.7=pyh29332c3_1
  - httpx=0.28.1=pyhd8ed1ab_0
  - hyperframe=6.1.0=pyhd8ed1ab_0
  - icu=75.1=hfee45f7_0
  - importlib-metadata=8.6.1=pyha770c72_0
  - importlib_resources=6.5.2=pyhd8ed1ab_0
  - inflect=7.5.0=pyhd8ed1ab_0
  - ipykernel=6.29.5=pyh57ce528_0
  - ipython=8.31.0=pyh707e725_0
  - isoduration=20.11.0=pyhd8ed1ab_1
  - jedi=0.19.2=pyhd8ed1ab_1
  - json-c=0.18=he4178ee_0
  - json5=0.10.0=pyhd8ed1ab_1
  - jsonpointer=3.0.0=py312h81bd7bf_1
  - jsonschema=4.23.0=pyhd8ed1ab_1
  - jsonschema-specifications=2024.10.1=pyhd8ed1ab_1
  - jsonschema-with-format-nongpl=4.23.0=hd8ed1ab_1
  - jupyter-lsp=2.2.5=pyhd8ed1ab_1
  - jupyter_client=7.4.9=pyhd8ed1ab_0
  - jupyter_core=5.7.2=pyh31011fe_1
  - jupyter_events=0.11.0=pyhd8ed1ab_0
  - jupyter_server=2.15.0=pyhd8ed1ab_0
  - jupyter_server_terminals=0.5.3=pyhd8ed1ab_1
  - jupyterlab=4.3.5=pyhd8ed1ab_0
  - jupyterlab_pygments=0.3.0=pyhd8ed1ab_2
  - jupyterlab_server=2.27.3=pyhd8ed1ab_1
  - kaldi=5.5.1112=cpu_h175306b_7
  - kiwisolver=1.4.8=py312h2c4a281_0
  - krb5=1.21.3=h237132a_0
  - lazy-loader=0.4=pyhd8ed1ab_2
  - lazy_loader=0.4=pyhd8ed1ab_2
  - lcms2=2.16=ha0e7c42_0
  - legacy-api-wrap=1.4.1=pyhd8ed1ab_0
  - leidenalg=0.10.2=py312h20a0b95_0
  - lerc=4.0.0=h9a09cb3_0
  - libabseil=20240722.0=cxx17_h07bc746_4
  - libaec=1.1.3=hebf3989_0
  - libarchive=3.7.7=h3b16cec_3
  - libarrow=19.0.0=h819e3af_8_cpu
  - libarrow-acero=19.0.0=hf07054f_8_cpu
  - libarrow-dataset=19.0.0=hf07054f_8_cpu
  - libarrow-substrait=19.0.0=h4239455_8_cpu
  - libavif16=1.1.1=h45b7238_2
  - libblas=3.9.0=31_h10e41b3_openblas
  - libbrotlicommon=1.1.0=hd74edd7_2
  - libbrotlidec=1.1.0=hd74edd7_2
  - libbrotlienc=1.1.0=hd74edd7_2
  - libcblas=3.9.0=31_hb3479ef_openblas
  - libclang=19.1.7=default_hf90f093_1
  - libclang-cpp17=17.0.6=default_hf90f093_8
  - libclang13=19.1.7=default_h81d93ff_1
  - libcrc32c=1.1.2=hbdafb3b_0
  - libcurl=8.11.1=h73640d1_0
  - libcxx=19.1.7=ha82da77_0
  - libde265=1.0.15=h2ffa867_0
  - libdeflate=1.23=hec38601_0
  - libedit=3.1.20240808=pl5321hafb1f1b_0
  - libev=4.33=h93a5062_2
  - libevent=2.1.12=h2757513_1
  - libexpat=2.6.4=h286801f_0
  - libffi=3.4.2=h3422bc3_5
  - libgdal-core=3.10.1=h9ef0d2d_2
  - libgfortran=15.1.0=hfdf1602_0
  - libgfortran5=15.1.0=hb74de2c_0
  - libgoogle-cloud=2.34.0=hdbe95d5_0
  - libgoogle-cloud-storage=2.34.0=h7081f7f_0
  - libgrpc=1.67.1=h0a426d6_1
  - libheif=1.19.5=gpl_h297b2c4_100
  - libhwloc=2.11.2=default_hbce5d74_1001
  - libiconv=1.17=h0d3ecfb_2
  - libjpeg-turbo=3.0.0=hb547adb_1
  - libkml=1.3.0=he250239_1021
  - liblapack=3.9.0=31_hc9a63f6_openblas
  - liblapacke=3.9.0=31_hbb7bcf8_openblas
  - libleidenalg=0.11.1=h1995070_0
  - libllvm14=14.0.6=hd1a9a77_4
  - libllvm17=17.0.6=hc4b4ae8_3
  - libllvm19=19.1.7=hc4b4ae8_1
  - liblzma=5.6.3=h39f12f2_1
  - libnghttp2=1.64.0=h6d7220d_0
  - libopenblas=0.3.29=openmp_hf332438_0
  - libopentelemetry-cpp=1.18.0=h0c05b2d_1
  - libopentelemetry-cpp-headers=1.18.0=hce30654_1
  - libparquet=19.0.0=h636d7b7_8_cpu
  - libpng=1.6.46=h3783ad8_0
  - libprotobuf=5.28.3=h3bd63a1_1
  - libre2-11=2024.07.02=h07bc746_2
  - librttopo=1.1.0=ha2cf0f4_17
  - libsodium=1.0.20=h99b78c6_0
  - libspatialite=5.1.0=hf92fc0a_12
  - libsqlite=3.48.0=h3f77e49_1
  - libssh2=1.11.1=h9cc3647_0
  - libthrift=0.21.0=h64651cc_0
  - libtiff=4.7.0=h551f018_3
  - libtorch=2.5.1=cpu_generic_he9b55c7_11
  - libutf8proc=2.10.0=hda25de7_0
  - libuv=1.50.0=h5505292_0
  - libwebp=1.5.0=h1618228_0
  - libwebp-base=1.5.0=h2471fea_0
  - libxcb=1.17.0=hdb1d25a_0
  - libxml2=2.13.5=h178c5d8_1
  - libzlib=1.3.1=h8359307_2
  - llvm-openmp=19.1.7=hdb05f8b_0
  - locket=1.0.0=pyhd8ed1ab_0
  - lz4=4.3.3=py312hf263c89_2
  - lz4-c=1.10.0=h286801f_1
  - lzo=2.10=h93a5062_1001
  - mapclassify=2.8.1=pyhd8ed1ab_1
  - matplotlib-inline=0.1.7=pyhd8ed1ab_1
  - matplotlib-scalebar=0.9.0=pyhd8ed1ab_0
  - minizip=4.0.7=hff1a8ea_3
  - mistune=2.0.5=pyhd8ed1ab_0
  - mpc=1.3.1=h8f1351a_1
  - mpfr=4.2.1=hb693164_3
  - mpmath=1.3.0=py312hca03da5_0
  - msgpack-python=1.1.0=py312h6142ec9_0
  - munkres=1.1.4=pyh9f0ad1d_0
  - natsort=8.4.0=pyh29332c3_1
  - nb_conda_kernels=2.5.2=py312hca03da5_1
  - nbclient=0.10.2=pyhd8ed1ab_0
  - nbconvert-core=7.16.6=pyh29332c3_0
  - nbformat=5.10.4=pyhd8ed1ab_1
  - ncurses=6.5=h5e97a16_2
  - nest-asyncio=1.6.0=pyhd8ed1ab_1
  - nlohmann_json=3.11.3=h00cdb27_1
  - nomkl=1.0=h5ca1d4c_0
  - notebook=7.3.2=pyhd8ed1ab_0
  - notebook-shim=0.2.4=pyhd8ed1ab_1
  - openfst=1.8.3=h950e60b_3
  - openjpeg=2.5.3=h8a3d83b_0
  - openpyxl=3.1.5=py312hf6e0af7_1
  - openssl=3.4.1=h81ee809_0
  - orc=2.0.3=h0ff2369_2
  - overrides=7.7.0=pyhd8ed1ab_1
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - parso=0.8.4=pyhd8ed1ab_1
  - partd=1.4.2=pyhd8ed1ab_0
  - patsy=1.0.1=pyhd8ed1ab_1
  - pcre2=10.44=h297a79d_2
  - pexpect=4.9.0=pyhd8ed1ab_1
  - pickleshare=0.7.5=pyhd8ed1ab_1004
  - pip=25.0=pyh8b19718_0
  - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_2
  - pooch=1.8.2=pyhd8ed1ab_1
  - proj=9.5.1=h1318a7e_0
  - prometheus-cpp=1.3.0=h0967b3e_0
  - prometheus_client=0.21.1=pyhd8ed1ab_0
  - prompt-toolkit=3.0.50=pyha770c72_0
  - pthread-stubs=0.4=hd74edd7_1002
  - ptyprocess=0.7.0=pyhd8ed1ab_1
  - pure_eval=0.2.3=pyhd8ed1ab_1
  - pybind11=2.13.6=pyh1ec8472_2
  - pybind11-global=2.13.6=pyh415d2e4_2
  - pycparser=2.22=pyh29332c3_1
  - pyct=0.5.0=pyhd8ed1ab_1
  - pynndescent=0.5.13=pyhd8ed1ab_1
  - pyobjc-core=11.0=py312hb9d441b_0
  - pyobjc-framework-cocoa=11.0=py312hb9d441b_0
  - pysocks=1.7.1=py312hca03da5_0
  - python=3.12.8=hc22306f_1_cpython
  - python-dateutil=2.9.0.post0=pyhff2d567_1
  - python-fastjsonschema=2.21.1=pyhd8ed1ab_0
  - python-json-logger=2.0.7=pyhd8ed1ab_0
  - python_abi=3.12=5_cp312
  - pytorch=2.5.1=cpu_generic_py312_h49ed405_11
  - pywavelets=1.8.0=py312he0011b7_0
  - pyyaml=6.0.2=py312h80987f9_0
  - pyzmq=24.0.1=py312h80987f9_0
  - qhull=2020.2=h420ef59_5
  - rav1e=0.6.6=h69fbcac_2
  - re2=2024.07.02=h6589ca4_2
  - readline=8.2=h92ec313_1
  - referencing=0.36.2=pyh29332c3_0
  - rfc3339-validator=0.1.4=pyhd8ed1ab_1
  - rfc3986-validator=0.1.1=pyh9f0ad1d_0
  - rpds-py=0.22.3=py312hcd83bfe_0
  - scvi-tools=1.2.2.post2=pyhd8ed1ab_2
  - seaborn=0.13.2=hd8ed1ab_3
  - seaborn-base=0.13.2=pyhd8ed1ab_3
  - send2trash=1.8.3=pyh31c8845_1
  - six=1.17.0=pyhd8ed1ab_0
  - sleef=3.8=h8391f65_0
  - slicerator=1.1.0=pyhd8ed1ab_1
  - snappy=1.2.1=h98b9ce2_1
  - sniffio=1.3.1=pyhd8ed1ab_1
  - sortedcontainers=2.4.0=pyhd8ed1ab_0
  - soupsieve=2.5=pyhd8ed1ab_1
  - sqlite=3.48.0=hd7222ec_1
  - stack_data=0.6.3=pyhd8ed1ab_1
  - svt-av1=2.3.0=hf24288c_0
  - tbb=2021.8.0=h48ca7d4_0
  - terminado=0.18.1=pyh31c8845_0
  - texttable=1.7.0=pyhd8ed1ab_1
  - tinycss2=1.4.0=pyhd8ed1ab_0
  - tk=8.6.13=h5083fa2_1
  - tomli=2.2.1=pyhd8ed1ab_1
  - toolz=1.0.0=pyhd8ed1ab_1
  - tornado=6.4.2=py312hea69d52_0
  - tqdm=4.67.1=pyhd8ed1ab_1
  - traitlets=5.14.3=pyhd8ed1ab_1
  - types-python-dateutil=2.9.0.20241206=pyhd8ed1ab_0
  - typing_utils=0.1.0=pyhd8ed1ab_1
  - unicodedata2=16.0.0=py312hea69d52_0
  - uri-template=1.3.0=pyhd8ed1ab_1
  - uriparser=0.9.8=h00cdb27_0
  - wcwidth=0.2.13=pyhd8ed1ab_1
  - webcolors=24.11.1=pyhd8ed1ab_0
  - webencodings=0.5.1=pyhd8ed1ab_3
  - websocket-client=1.8.0=pyhd8ed1ab_1
  - wheel=0.45.1=pyhd8ed1ab_1
  - wrapt=1.17.2=py312hea69d52_0
  - x265=3.5=hbc6ce65_3
  - xarray-datatree=0.0.14=pyhd8ed1ab_0
  - xarray-schema=0.0.3=pyhd8ed1ab_0
  - xarray-spatial=0.4.0=pyhd8ed1ab_1
  - xerces-c=3.2.5=h92fc2f4_2
  - xorg-libxau=1.0.12=h5505292_0
  - xorg-libxdmcp=1.1.5=hd74edd7_0
  - xyzservices=2025.1.0=pyhd8ed1ab_0
  - yaml=0.2.5=h1a28f6b_0
  - zeromq=4.3.5=hc1bb282_7
  - zict=3.0.0=pyhd8ed1ab_1
  - zipp=3.21.0=pyhd8ed1ab_1
  - zlib=1.3.1=h8359307_2
  - zstd=1.5.6=hb46c0d2_0
  - pip:
      - absl-py==2.1.0
      - access==1.1.9
      - adjusttext==1.3.0
      - affine==2.4.0
      - aiobotocore==2.23.2
      - aiohappyeyeballs==2.6.1
      - aiohttp==3.12.14
      - aioitertools==0.12.0
      - aiosignal==1.4.0
      - alabaster==1.0.0
      - anndata==0.11.0
      - anndata2ri==1.3.2
      - annotated-types==0.7.0
      - app-model==0.3.1
      - appdirs==1.4.4
      - array-api-compat==1.12.0
      - asciitree==0.3.3
      - attrs==25.3.0
      - biopython==1.85
      - blitzgsea==1.3.47
      - botocore==1.39.8
      - build==1.2.2.post1
      - cachey==0.2.1
      - cell2location==0.1.4
      - certifi==2025.7.14
      - charset-normalizer==3.4.2
      - chex==0.1.88
      - click==8.2.1
      - click-plugins==1.1.1.2
      - cligj==0.7.2
      - commot==0.0.3
      - contourpy==1.3.3
      - crc32c==2.7.1
      - datashader==0.18.1
      - decorator==4.4.2
      - decoupler==2.1.1
      - deprecation==2.1.0
      - docrep==0.3.2
      - docstring-parser==0.16
      - docutils==0.21.2
      - donfig==0.8.1.post1
      - equinox==0.11.11
      - esda==2.7.1
      - etils==1.11.0
      - fbpca==1.0
      - filelock==3.18.0
      - fiona==1.10.1
      - flax==0.10.2
      - flexcache==0.3
      - flexparser==0.4
      - flowio==1.3.0
      - fonttools==4.59.0
      - formulaic==1.1.1
      - formulaic-contrasts==1.0.0
      - freetype-py==2.5.1
      - frozenlist==1.7.0
      - fsspec==2025.7.0
      - gensim==4.3.3
      - geopandas==1.1.1
      - geosketch==1.3
      - giddy==2.3.6
      - grpcio==1.70.0
      - gseapy==1.1.8
      - h5py==3.14.0
      - heapdict==1.0.1
      - hsluv==5.0.4
      - humanize==4.11.0
      - idna==3.10
      - igraph==0.11.9
      - imagecodecs==2024.12.30
      - imageio==2.37.0
      - imagesize==1.4.1
      - in-n-out==0.2.1
      - inequality==1.1.2
      - iniconfig==2.1.0
      - interface-meta==1.3.0
      - jax==0.5.0
      - jaxlib==0.5.0
      - jaxopt==0.8.3
      - jaxtyping==0.2.38
      - jinja2==3.1.6
      - jmespath==1.0.1
      - joblib==1.5.1
      - karateclub==1.2.2
      - lamin-utils==0.13.10
      - legendkit==0.3.6
      - levenshtein==0.27.1
      - libpysal==4.13.0
      - lightning==2.5.2
      - lightning-utilities==0.11.9
      - lineax==0.0.7
      - llvmlite==0.44.0
      - loguru==0.7.3
      - magicgui==0.10.0
      - markdown==3.7
      - markdown-it-py==3.0.0
      - markupsafe==3.0.2
      - marsilea==0.5.4
      - matplotlib==3.10.3
      - matplotlib-venn==1.1.2
      - mdurl==0.1.2
      - mgwr==2.2.1
      - mizani==0.13.1
      - ml-collections==1.0.0
      - ml-dtypes==0.5.1
      - momepy==0.10.0
      - more-itertools==10.7.0
      - mudata==0.3.1
      - multidict==6.6.3
      - multipledispatch==1.0.0
      - multiscale-spatial-image==2.0.2
      - muon==0.1.7
      - napari==0.5.6
      - napari-console==0.1.3
      - napari-matplotlib==3.0.0
      - napari-plugin-engine==0.2.0
      - napari-plugin-manager==0.1.6
      - napari-svg==0.2.1
      - narwhals==2.0.0
      - networkx==3.5
      - npe2==0.7.7
      - numba==0.61.2
      - numcodecs==0.15.1
      - numpy==1.26.4
      - numpy-groupies==0.11.2
      - numpydoc==1.8.0
      - numpyro==0.16.1
      - ome-types==0.5.3
      - omnipath==1.0.12
      - opencv-python==4.11.0.86
      - opt-einsum==3.4.0
      - optax==0.2.4
      - orbax-checkpoint==0.11.0
      - ott-jax==0.5.0
      - packaging==25.0
      - pandas==2.3.1
      - param==2.2.1
      - partsegcore-compiled-backend==0.15.12
      - pertpy==0.9.5
      - pillow==11.3.0
      - pims==0.7
      - pint==0.24.4
      - platformdirs==4.3.8
      - plotly==6.2.0
      - plotnine==0.14.5
      - pluggy==1.6.0
      - ply==3.11
      - pointpats==2.5.1
      - pot==0.9.5
      - propcache==0.3.2
      - protobuf==5.29.3
      - psutil==7.0.0
      - psygnal==0.12.0
      - pubchempy==1.0.4
      - pulp==3.2.1
      - pyarrow==21.0.0
      - pycirclize==1.9.0
      - pyconify==0.2.1
      - pydantic==2.10.6
      - pydantic-compat==0.1.2
      - pydantic-core==2.27.2
      - pydeseq2==0.5.1
      - pygments==2.19.2
      - pygsp==0.5.1
      - pyogrio==0.11.0
      - pyomo==6.8.2
      - pyopengl==3.1.9
      - pyparsing==3.2.3
      - pyproj==3.7.1
      - pyproject-hooks==1.2.0
      - pyqt5==5.15.11
      - pyqt5-qt5==5.15.16
      - pyqt5-sip==12.17.0
      - pyqtgraph==0.13.7
      - pyro-api==0.1.2
      - pyro-ppl==1.9.1
      - pysal==25.1
      - pytest==8.4.1
      - python-igraph==0.11.9
      - python-levenshtein==0.27.1
      - python-louvain==0.16
      - pytorch-lightning==2.5.0.post0
      - pytz==2025.2
      - qtconsole==5.6.1
      - qtpy==2.4.2
      - quantecon==0.8.2
      - rapidfuzz==3.13.0
      - rasterio==1.4.3
      - rasterstats==0.20.0
      - readfcs==2.0.1
      - requests==2.32.4
      - rich==14.1.0
      - rpy2==3.5.17
      - rtree==1.4.0
      - s3fs==2025.7.0
      - scanpy==1.10.0
      - scikit-image==0.25.2
      - scikit-learn==1.7.1
      - scikit-misc==0.5.1
      - scipy==1.16.1
      - segregation==2.5.2
      - session-info==1.0.1
      - session-info2==0.2
      - setuptools==75.8.0
      - shapely==2.1.1
      - shellingham==1.5.4
      - simplejson==3.19.3
      - smart-open==7.3.0.post1
      - snowballstemmer==2.2.0
      - spaghetti==1.7.6
      - sparse==0.15.5
      - sparsecca==0.3.1
      - spatial-image==1.2.1
      - spglm==1.1.0
      - sphinx==8.1.3
      - sphinxcontrib-applehelp==2.0.0
      - sphinxcontrib-devhelp==2.0.0
      - sphinxcontrib-htmlhelp==2.1.0
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==2.0.0
      - sphinxcontrib-serializinghtml==2.0.0
      - spint==1.0.7
      - splot==1.1.7
      - spopt==0.7.0
      - spreg==1.8.3
      - statsmodels==0.14.5
      - stdlib-list==0.11.1
      - superqt==0.7.1
      - sympy==1.14.0
      - tabulate==0.9.0
      - tblib==3.1.0
      - tensorboard==2.18.0
      - tensorboard-data-server==0.7.2
      - tensorstore==0.1.71
      - threadpoolctl==3.6.0
      - tifffile==2025.6.11
      - tobler==0.12.1
      - tomli-w==1.2.0
      - torch==2.6.0
      - torchaudio==2.6.0
      - torchmetrics==1.6.1
      - torchvision==0.21.0
      - triangle==20250106
      - typeguard==4.4.4
      - typer==0.15.1
      - typing-extensions==4.14.1
      - tzdata==2025.2
      - tzlocal==5.3
      - umap-learn==0.5.9.post2
      - urllib3==2.5.0
      - validators==0.35.0
      - vispy==0.14.3
      - wadler-lindig==0.1.3
      - werkzeug==3.1.3
      - xarray==2024.11.0
      - xarray-dataclasses==1.9.1
      - xsdata==24.3.1
      - yarl==1.20.1
      - zarr==2.18.4
      - zstandard==0.23.0
prefix: /Users/jk/miniconda3/envs/scvi-tools
scvi-tools.txt
absl-py==2.1.0
access==1.1.9
adjustText==1.3.0
affine==2.4.0
aiobotocore==2.23.2
aiohappyeyeballs==2.6.1
aiohttp==3.12.14
aioitertools==0.12.0
aiosignal==1.4.0
alabaster==1.0.0
anndata==0.11.0
anndata2ri==1.3.2
annotated-types==0.7.0
anyio @ file:///home/conda/feedstock_root/build_artifacts/anyio_1736174388474/work
app-model==0.3.1
appdirs==1.4.4
appnope @ file:///home/conda/feedstock_root/build_artifacts/appnope_1733332318622/work
argon2-cffi @ file:///home/conda/feedstock_root/build_artifacts/argon2-cffi_1733311059102/work
argon2-cffi-bindings @ file:///Users/runner/miniforge3/conda-bld/argon2-cffi-bindings_1725356639941/work
array-api-compat==1.12.0
arrow @ file:///home/conda/feedstock_root/build_artifacts/arrow_1733584251875/work
asciitree==0.3.3
asttokens @ file:///home/conda/feedstock_root/build_artifacts/asttokens_1733250440834/work
async-lru @ file:///home/conda/feedstock_root/build_artifacts/async-lru_1733584297267/work
attrs==25.3.0
babel @ file:///home/conda/feedstock_root/build_artifacts/babel_1733236348445/work
beautifulsoup4 @ file:///home/conda/feedstock_root/build_artifacts/beautifulsoup4_1733230845337/work
biopython==1.85
bleach @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_bleach_1737382993/work
blitzgsea==1.3.47
bokeh @ file:///home/conda/feedstock_root/build_artifacts/bokeh_1733754687975/work
botocore==1.39.8
branca @ file:///home/conda/feedstock_root/build_artifacts/branca_1734433375112/work
Brotli @ file:///private/var/folders/k1/30mswbxs7r1g6zwn8y4fyt500000gp/T/abs_f7i0oxypt6/croot/brotli-split_1736182464088/work
build==1.2.2.post1
cached-property @ file:///home/conda/feedstock_root/build_artifacts/cached_property_1615209429212/work
cachey==0.2.1
cell2location @ git+https://github.com/kimsjune/cell2location.git@02c4a785af404d54947a1b15d6e966e516ecef49
certifi==2025.7.14
cffi @ file:///Users/runner/miniforge3/conda-bld/cffi_1725560578465/work
charset-normalizer==3.4.2
chex==0.1.88
click==8.2.1
click-plugins==1.1.1.2
cligj==0.7.2
cloudpickle==3.1.1
colorama @ file:///home/conda/feedstock_root/build_artifacts/colorama_1733218098505/work
colorcet==3.1.0
comm @ file:///home/conda/feedstock_root/build_artifacts/comm_1733502965406/work
commot==0.0.3
contourpy==1.3.3
crc32c==2.7.1
cycler==0.12.1
cytoolz @ file:///Users/runner/miniforge3/conda-bld/cytoolz_1734107254000/work
dask==2024.11.2
dask-expr==1.1.19
dask-image==2024.5.3
datashader==0.18.1
debugpy @ file:///Users/runner/miniforge3/conda-bld/debugpy_1737269807180/work
decorator==4.4.2
decoupler==2.1.1
defusedxml @ file:///home/conda/feedstock_root/build_artifacts/defusedxml_1615232257335/work
Deprecated==1.2.18
deprecation==2.1.0
distributed==2024.11.2
docrep==0.3.2
docstring_parser==0.16
docutils==0.21.2
donfig==0.8.1.post1
entrypoints @ file:///home/conda/feedstock_root/build_artifacts/entrypoints_1733327148154/work
equinox==0.11.11
esda==2.7.1
et_xmlfile @ file:///home/conda/feedstock_root/build_artifacts/et_xmlfile_1733749653422/work
etils==1.11.0
exceptiongroup @ file:///home/conda/feedstock_root/build_artifacts/exceptiongroup_1733208806608/work
executing @ file:///home/conda/feedstock_root/build_artifacts/executing_1733569351617/work
fasteners==0.19
fastjsonschema @ file:///home/conda/feedstock_root/build_artifacts/python-fastjsonschema_1733235979760/work/dist
fbpca==1.0
filelock==3.18.0
fiona==1.10.1
flax==0.10.2
flexcache==0.3
flexparser==0.4
FlowIO==1.3.0
folium @ file:///home/conda/feedstock_root/build_artifacts/folium_1736247869287/work
fonttools==4.59.0
formulaic==1.1.1
formulaic-contrasts==1.0.0
fqdn @ file:///home/conda/feedstock_root/build_artifacts/fqdn_1733327382592/work/dist
freetype-py==2.5.1
frozenlist==1.7.0
fsspec==2025.7.0
gensim==4.3.3
geopandas==1.1.1
geosketch==1.3
giddy==2.3.6
gmpy2 @ file:///Users/runner/miniforge3/conda-bld/gmpy2_1733462592473/work
grpcio==1.70.0
gseapy==1.1.8
h11 @ file:///home/conda/feedstock_root/build_artifacts/h11_1733327467879/work
h2 @ file:///home/conda/feedstock_root/build_artifacts/h2_1733298745555/work
h5py==3.14.0
HeapDict==1.0.1
hpack @ file:///home/conda/feedstock_root/build_artifacts/hpack_1737618293087/work
hsluv==5.0.4
httpcore @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_httpcore_1731707562/work
httpx @ file:///home/conda/feedstock_root/build_artifacts/httpx_1733663348460/work
humanize==4.11.0
hyperframe @ file:///home/conda/feedstock_root/build_artifacts/hyperframe_1737618333194/work
idna==3.10
igraph==0.11.9
imagecodecs==2024.12.30
imageio==2.37.0
imagesize==1.4.1
importlib_metadata @ file:///home/conda/feedstock_root/build_artifacts/importlib-metadata_1737420181517/work
importlib_resources @ file:///home/conda/feedstock_root/build_artifacts/importlib_resources_1736252299705/work
in-n-out==0.2.1
inequality==1.1.2
inflect==7.5.0
iniconfig==2.1.0
interface-meta==1.3.0
ipykernel @ file:///Users/runner/miniforge3/conda-bld/ipykernel_1719845458456/work
ipython @ file:///home/conda/feedstock_root/build_artifacts/ipython_1734788142186/work
isoduration @ file:///home/conda/feedstock_root/build_artifacts/isoduration_1733493628631/work/dist
jax==0.5.0
jaxlib==0.5.0
jaxopt==0.8.3
jaxtyping==0.2.38
jedi @ file:///home/conda/feedstock_root/build_artifacts/jedi_1733300866624/work
Jinja2==3.1.6
jmespath==1.0.1
joblib==1.5.1
json5 @ file:///home/conda/feedstock_root/build_artifacts/json5_1733272076743/work
jsonpointer @ file:///Users/runner/miniforge3/conda-bld/jsonpointer_1725302931775/work
jsonschema @ file:///home/conda/feedstock_root/build_artifacts/jsonschema_1733472696581/work
jsonschema-specifications @ file:///tmp/tmpk0f344m9/src
jupyter-events @ file:///home/conda/feedstock_root/build_artifacts/jupyter_events_1734531682843/work
jupyter-lsp @ file:///home/conda/feedstock_root/build_artifacts/jupyter-lsp-meta_1733492907176/work/jupyter-lsp
jupyter_client @ file:///home/conda/feedstock_root/build_artifacts/jupyter_client_1673615989977/work
jupyter_core @ file:///home/conda/feedstock_root/build_artifacts/jupyter_core_1727163409502/work
jupyter_server @ file:///home/conda/feedstock_root/build_artifacts/jupyter_server_1734702637701/work
jupyter_server_terminals @ file:///home/conda/feedstock_root/build_artifacts/jupyter_server_terminals_1733427956852/work
jupyterlab @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_1738184697351/work
jupyterlab_pygments @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_pygments_1733328101776/work
jupyterlab_server @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_server_1733599573484/work
karateclub==1.2.2
kiwisolver==1.4.8
lamin_utils==0.13.10
lazy_loader==0.4
legacy-api-wrap==1.4.1
legendkit==0.3.6
leidenalg==0.10.2
Levenshtein==0.27.1
libpysal==4.13.0
lightning==2.5.2
lightning-utilities==0.11.9
lineax==0.0.7
llvmlite==0.44.0
locket==1.0.0
loguru==0.7.3
lz4 @ file:///Users/runner/miniforge3/conda-bld/lz4_1733474296338/work
magicgui==0.10.0
mapclassify @ file:///home/conda/feedstock_root/build_artifacts/mapclassify_1733731066416/work
Markdown==3.7
markdown-it-py==3.0.0
MarkupSafe==3.0.2
marsilea==0.5.4
matplotlib==3.10.3
matplotlib-inline @ file:///home/conda/feedstock_root/build_artifacts/matplotlib-inline_1733416936468/work
matplotlib-scalebar==0.9.0
matplotlib-venn==1.1.2
mdurl==0.1.2
mgwr==2.2.1
mistune @ file:///home/conda/feedstock_root/build_artifacts/mistune_1675771498296/work
mizani==0.13.1
ml_collections==1.0.0
ml_dtypes==0.5.1
momepy==0.10.0
more-itertools==10.7.0
mpmath==1.3.0
msgpack==1.1.0
mudata==0.3.1
multidict==6.6.3
multipledispatch==1.0.0
multiscale_spatial_image==2.0.2
munkres==1.1.4
muon==0.1.7
napari==0.5.6
napari-console==0.1.3
napari-matplotlib==3.0.0
napari-plugin-engine==0.2.0
napari-plugin-manager==0.1.6
napari-svg==0.2.1
narwhals==2.0.0
natsort==8.4.0
nb_conda_kernels @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_0dkvir5_y3/croot/nb_conda_kernels_1744229689603/work
nbclient @ file:///home/conda/feedstock_root/build_artifacts/nbclient_1734628800805/work
nbconvert @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_nbconvert-core_1738067871/work
nbformat @ file:///home/conda/feedstock_root/build_artifacts/nbformat_1733402752141/work
nest-asyncio==1.6.0
networkx==3.5
notebook @ file:///home/conda/feedstock_root/build_artifacts/notebook_1734789425270/work
notebook_shim @ file:///home/conda/feedstock_root/build_artifacts/notebook-shim_1733408315203/work
npe2==0.7.7
numba==0.61.2
numcodecs==0.15.1
numpy==1.26.4
numpy-groupies==0.11.2
numpydoc==1.8.0
numpyro==0.16.1
ome-types==0.5.3
omnipath==1.0.12
opencv-python==4.11.0.86
openpyxl @ file:///Users/runner/miniforge3/conda-bld/openpyxl_1725460839492/work
opt_einsum==3.4.0
optax==0.2.4
orbax-checkpoint==0.11.0
ott-jax==0.5.0
overrides @ file:///home/conda/feedstock_root/build_artifacts/overrides_1734587627321/work
packaging==25.0
pandas==2.3.1
pandocfilters @ file:///home/conda/feedstock_root/build_artifacts/pandocfilters_1631603243851/work
param==2.2.1
parso @ file:///home/conda/feedstock_root/build_artifacts/parso_1733271261340/work
partd==1.4.2
PartSegCore_compiled_backend==0.15.12
patsy==1.0.1
pertpy==0.9.5
pexpect @ file:///home/conda/feedstock_root/build_artifacts/pexpect_1733301927746/work
pickleshare @ file:///home/conda/feedstock_root/build_artifacts/pickleshare_1733327343728/work
pillow==11.3.0
PIMS==0.7
Pint==0.24.4
pkgutil_resolve_name @ file:///home/conda/feedstock_root/build_artifacts/pkgutil-resolve-name_1733344503739/work
platformdirs==4.3.8
plotly==6.2.0
plotnine==0.14.5
pluggy==1.6.0
ply==3.11
pointpats==2.5.1
pooch==1.8.2
POT==0.9.5
prometheus_client @ file:///home/conda/feedstock_root/build_artifacts/prometheus_client_1733327310477/work
prompt_toolkit @ file:///home/conda/feedstock_root/build_artifacts/prompt-toolkit_1737453357274/work
propcache==0.3.2
protobuf==5.29.3
psutil==7.0.0
psygnal==0.12.0
ptyprocess @ file:///home/conda/feedstock_root/build_artifacts/ptyprocess_1733302279685/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl#sha256=92c32ff62b5fd8cf325bec5ab90d7be3d2a8ca8c8a3813ff487a8d2002630d1f
PubChemPy==1.0.4
PuLP==3.2.1
pure_eval @ file:///home/conda/feedstock_root/build_artifacts/pure_eval_1733569405015/work
pyarrow==21.0.0
pybind11 @ file:///D:/bld/pybind11-split_1730237329882/work
pybind11_global @ file:///home/conda/feedstock_root/build_artifacts/pybind11-split_1730237328107/work
pyCirclize==1.9.0
pyconify==0.2.1
pycparser @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_pycparser_1733195786/work
pyct==0.5.0
pydantic==2.10.6
pydantic-compat==0.1.2
pydantic_core==2.27.2
pydeseq2 @ git+https://github.com/kimsjune/PyDESeq2.git@11aed8ccd9bada7188ec377f4fbfb9e0860406ab
Pygments==2.19.2
PyGSP==0.5.1
pynndescent==0.5.13
pyobjc-core @ file:///Users/runner/miniforge3/conda-bld/pyobjc-core_1736890741759/work
pyobjc-framework-Cocoa @ file:///Users/runner/miniforge3/conda-bld/pyobjc-framework-cocoa_1736926938901/work
pyogrio==0.11.0
Pyomo==6.8.2
PyOpenGL==3.1.9
pyparsing==3.2.3
pyproj==3.7.1
pyproject_hooks==1.2.0
PyQt5==5.15.11
PyQt5-Qt5==5.15.16
PyQt5_sip==12.17.0
pyqtgraph==0.13.7
pyro-api==0.1.2
pyro-ppl==1.9.1
pysal==25.1
PySocks @ file:///Users/builder/cbouss/perseverance-python-buildout/croot/pysocks_1699237568675/work
pytest==8.4.1
python-dateutil==2.9.0.post0
python-igraph==0.11.9
python-json-logger @ file:///home/conda/feedstock_root/build_artifacts/python-json-logger_1677079630776/work
python-Levenshtein==0.27.1
python-louvain==0.16
pytorch-lightning==2.5.0.post0
pytz==2025.2
PyWavelets==1.8.0
PyYAML==6.0.2
pyzmq @ file:///private/var/folders/nz/j6p8yfhx1mv_0grj5xl4650h0000gp/T/abs_cbtlm0pib_/croot/pyzmq_1709318330127/work
qtconsole==5.6.1
QtPy==2.4.2
quantecon==0.8.2
RapidFuzz==3.13.0
rasterio==1.4.3
rasterstats==0.20.0
readfcs==2.0.1
referencing @ file:///home/conda/feedstock_root/build_artifacts/bld/rattler-build_referencing_1737836872/work
requests==2.32.4
rfc3339_validator @ file:///home/conda/feedstock_root/build_artifacts/rfc3339-validator_1733599910982/work
rfc3986-validator @ file:///home/conda/feedstock_root/build_artifacts/rfc3986-validator_1598024191506/work
rich==14.1.0
rpds-py @ file:///Users/runner/miniforge3/conda-bld/rpds-py_1733366692110/work
rpy2==3.5.17
rtree==1.4.0
s3fs==2025.7.0
scanpy==1.10.0
scikit-image==0.25.2
scikit-learn==1.7.1
scikit-misc==0.5.1
scipy==1.16.1
scvi-tools @ file:///home/conda/feedstock_root/build_artifacts/scvi-tools_1736352915771/work
seaborn==0.13.2
segregation==2.5.2
Send2Trash @ file:///Users/runner/miniforge3/conda-bld/send2trash_1733322099476/work
session-info2==0.2
session_info==1.0.1
setuptools==80.9.0
shapely==2.1.1
shellingham==1.5.4
simplejson==3.19.3
six==1.17.0
slicerator==1.1.0
smart_open==7.3.0.post1
sniffio @ file:///home/conda/feedstock_root/build_artifacts/sniffio_1733244044561/work
snowballstemmer==2.2.0
sortedcontainers==2.4.0
soupsieve @ file:///home/conda/feedstock_root/build_artifacts/soupsieve_1693929250441/work
spaghetti==1.7.6
sparse==0.15.5
sparsecca==0.3.1
spatial_image==1.2.1
spglm==1.1.0
Sphinx==8.1.3
sphinxcontrib-applehelp==2.0.0
sphinxcontrib-devhelp==2.0.0
sphinxcontrib-htmlhelp==2.1.0
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==2.0.0
sphinxcontrib-serializinghtml==2.0.0
spint==1.0.7
splot==1.1.7
spopt==0.7.0
spreg==1.8.3
stack_data @ file:///home/conda/feedstock_root/build_artifacts/stack_data_1733569443808/work
statsmodels==0.14.5
stdlib-list==0.11.1
superqt==0.7.1
sympy==1.14.0
tabulate==0.9.0
tblib==3.1.0
tensorboard==2.18.0
tensorboard-data-server==0.7.2
tensorstore==0.1.71
terminado @ file:///Users/runner/miniforge3/conda-bld/terminado_1710263781917/work
texttable==1.7.0
threadpoolctl==3.6.0
tifffile==2025.6.11
tinycss2 @ file:///home/conda/feedstock_root/build_artifacts/tinycss2_1729802851396/work
tobler==0.12.1
tomli @ file:///home/conda/feedstock_root/build_artifacts/tomli_1733256695513/work
tomli_w==1.2.0
toolz==1.0.0
torch @ file:///Users/runner/miniforge3/conda-bld/libtorch_1738206012956/work
torchaudio==2.6.0
torchmetrics==1.6.1
torchvision @ file:///Users/runner/miniforge3/conda-bld/bld/rattler-build_torchvision_1737215442/work
tornado==6.4.2
tqdm==4.67.1
traitlets @ file:///home/conda/feedstock_root/build_artifacts/traitlets_1733367359838/work
triangle==20250106
typeguard==4.4.4
typer==0.15.1
types-python-dateutil @ file:///home/conda/feedstock_root/build_artifacts/types-python-dateutil_1733612335562/work
typing_extensions==4.14.1
typing_utils @ file:///home/conda/feedstock_root/build_artifacts/typing_utils_1733331286120/work
tzdata==2025.2
tzlocal==5.3
umap-learn==0.5.9.post2
unicodedata2 @ file:///Users/runner/miniforge3/conda-bld/unicodedata2_1736692573761/work
uri-template @ file:///home/conda/feedstock_root/build_artifacts/uri-template_1733323593477/work/dist
urllib3==2.5.0
validators==0.35.0
vispy==0.14.3
wadler_lindig==0.1.3
wcwidth @ file:///home/conda/feedstock_root/build_artifacts/wcwidth_1733231326287/work
webcolors @ file:///home/conda/feedstock_root/build_artifacts/webcolors_1733359735138/work
webencodings @ file:///home/conda/feedstock_root/build_artifacts/webencodings_1733236011802/work
websocket-client @ file:///home/conda/feedstock_root/build_artifacts/websocket-client_1733157342724/work
Werkzeug==3.1.3
wheel==0.45.1
wrapt==1.17.2
xarray==2024.11.0
xarray-dataclasses==1.9.1
xarray-datatree @ file:///home/conda/feedstock_root/build_artifacts/xarray-datatree_1707506363407/work
xarray-schema==0.0.3
xarray-spatial==0.4.0
xsdata==24.3.1
xyzservices @ file:///home/conda/feedstock_root/build_artifacts/xyzservices_1737234886776/work
yarl==1.20.1
zarr==2.18.4
zict==3.0.0
zipp==3.21.0
zstandard==0.23.0

There is just one little hair in the soup. The yml file can’t be used to create a new conda environment due to package version conflicts (with conda env create -f scvi-tools.yml). This is really beyond me because if there’s conflict, how is my current environment functioning? Maybe I will have to use pip’s venv in the future… (but what if I have to install a package with conda!?). These are the packages with sensitive versions: scanpy, anndata, jax, jaxlib, and numpy.

Aftermath

I think two lessons were learned.
1. Don’t install new packages into working conda env without “backing up”.
2. Package updates come with two steps forward (for the masses) and twenty steps back (for the few).

\ (•◡•) /

Back to top