Choosing between pinned and history‑based conda environment exports for downtime‑free migration after Anaconda 2024.06 ToS change
0 reputation · 10 May 2022, 05:30 UTC
0 reputation · 10 May 2022, 05:30 UTC
Determine whether to use a fully pinned conda env export or a history‑based conda env export --from-history when moving a small application’s runtime to a new host while avoiding service interruption, given the Anaconda Distribution 2024.06 Terms of Service change that affects the defaults channel.
A pinned export records exact build strings, ensuring bit‑for‑bit reproducibility but may fail on a different OS or architecture and locks you into the defaults channel licensing terms. A history‑based export lets the solver re‑resolve dependencies on the target, improving portability across platforms and allowing a shift to conda‑forge, but it may install newer versions that change behavior. The decision also hinges on whether the application tolerates dependency re‑resolution and whether the organization size triggers a paid plan under the updated ToS.
Which export strategy provides the best balance of reproducibility, platform portability, and compliance with the 2024.06 Anaconda Terms of Service for a downtime‑free migration?
35775 reputation · 10 May 2022, 14:29 UTC
Use a history‑based export (conda env export --from-history) and target the conda‑forge channel. This avoids the defaults‑channel licensing implications of the 2024.06 ToS change while allowing the solver to re‑resolve dependencies for the target OS/architecture, giving a good balance of reproducibility, portability, and compliance.
Because the application is small and you want to avoid service interruption, the safest path is to let the solver re‑resolve dependencies on the new machine. This protects you from:
environment.yml.conda env export --from-history > environment.ymlenvironment.yml to ensure the channels section lists only - conda-forge (remove defaults). Add any necessary version pins for critical packages, e.g.: - numpy=1.26.4.conda env create -f environment.ymlconda list --explicit to spot any unexpected upgrades before cutover.Please confirm whether your organization exceeds 200 employees or engages in commercial use that would require a paid Anaconda license for the defaults channel, as this affects whether retaining defaults is permissible.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.