conda is useful when a project needs to manage Python together with a particular combination of native libraries. Many packages, including common pandas installations, are also available through binary wheels. Choose the environment manager for the dependencies the project actually needs, then keep its reconstruction procedure explicit.
Python development environment · 01 selection and venv · 02 uv · 03 conda · 04 web Development·05 Data·AI·06 OCR·Service Separation
On this page
Distinguish between conda, Miniforge, and channels
| name | role |
|---|---|
| conda | Tools to manage your environment and packages |
| Miniforge | Installation distribution that uses conda-forge as a base. Entry points to install in this article |
| conda-forge | Channel where the community builds and distributes packages |
| environment | Independent prefix where the selected Python, library, and executable files are installed |
The conditions for using a tool called conda and specific distributions and services are not the same. When using it in your organization, also check the terms of use for the selected distribution, channel, and package. This article uses the Linux installation file distributed by official Miniforge repository and the conda-forge channel.
1. Obtain the installation file and checksum appropriate for your architecture.
Below is an example of x86_64 for Linux and commonly applied to Ubuntu and Rocky. The confirmed Miniforge release on October 18, 2026 is 26.7.2-0. On ARM servers, you need to select the aarch64 file for that release. When renaming a file, rename the checksum file as well.
uname -m
curl -fLO https://github.com/conda-forge/miniforge/releases/download/26.7.2-0/Miniforge3-26.7.2-0-Linux-x86_64.sh
curl -fLO https://github.com/conda-forge/miniforge/releases/download/26.7.2-0/Miniforge3-26.7.2-0-Linux-x86_64.sh.sha256
sha256sum -c Miniforge3-26.7.2-0-Linux-x86_64.sh.sha256
bash Miniforge3-26.7.2-0-Linux-x86_64.sh -b -p "$HOME/miniforge3"
"$HOME/miniforge3/bin/conda" --version
Verify that the checksum is correct, then install. If you are already using ~/miniforge3, new installations will not cover that directory. Verification in this article was performed with Miniforge installed in a separate working directory.
2. Initialize the shell and turn off base automatic entry.
"$HOME/miniforge3/bin/conda" init bash
# 새 터미널을 열거나 셸 설정을 다시 읽은 뒤
conda config --set auto_activate_base false
conda config --set channel_priority strict
conda --version
This example is Bash-based. New initialization settings may not be reflected in shells that are already open. The base is an environment that maintains conda itself, and the project library is installed in a separate environment. Rather than activating venv while activating conda, it is less confusing to check one by one which environment to use.
3. Create a project environment with environment.yml
Save the following environment.yml in the project root. nodefaults is a declaration to avoid implicitly adding other default channels.
name: data-lab
channels:
- conda-forge
- nodefaults
dependencies:
- python=3.12
- pandas
- numpy
- ipykernel
- pip
conda env create -f environment.yml
conda activate data-lab
python -c 'import sys, pandas; print(sys.executable); print(pandas.__version__)'
conda list
conda info --envs
The environment can be created in the envs path, etc. under Miniforge instead of .venv in the project directory. Therefore, do not assume that the folder containing the specification file and the actual environment path are the same. conda info --envs and sys.executable are the standards. Please also refer to conda environment management document .
If you have changed the declaration of the existing environment, you can update it as follows. --prune can remove conda dependencies that are no longer needed, so apply them first in a clone environment or restorable development environment where changes have been confirmed. I don’t expect it to completely clean up anything installed with pip.
conda env update -n data-lab -f environment.yml --prune
4. Keep separate YAML specifications and accurate environment records
conda env export -n data-lab --from-history > environment.history.yml
conda env export -n data-lab --no-builds > environment.snapshot.yml
conda list -n data-lab --explicit > conda-linux-64.explicit.txt
| record | What it means to recreate |
|---|---|
| environment.yml written by myself | The intent of the selected package and Python family. The version may change if reinterpreted. |
| –from-history | Focusing on the conda package requested by the user. Check pip requirements and platform differences separately |
| –no-builds snapshot | Leaves the selected package version in more detail, but does not guarantee reproduction on all platforms |
| –explicit | Record specific package artifact URL. Mainly used for restoration of the same platform/architecture |
If the current PC’s prefix: is included in the export file, check the path before putting it in the storage, and remove it if it is not an absolute path to be forced on other PCs. The explicit file is a record of conda artifacts and does not lock down the list of installed packages in the same way as pip. For mixed environments, both installation areas must be recorded. Newer condas also have the conda export command, but the distinction between specification and locking is the same.
# 동일 플랫폼의 별도 환경에서 explicit 복원 확인
conda create -n data-lab-rebuild --file conda-linux-64.explicit.txt
conda run -n data-lab-rebuild python -c 'import pandas; print(pandas.__version__)'
5. Install packages that absolutely require pip last.
If the package you want isn’t in the conda channel of your choice or the version you need is difficult to obtain, you may need pip. First, install the conda dependency and install the pip-only item with python -m pip in the activated project environment. It is easier to track down conflicts if you then change the specification and reconfigure the new environment rather than changing the conda package over and over again.
In YAML, you can record pip-specific packages and version conditions as a pip: sublist. Set the installation owner so that the same numpy, OpenCV, etc. are not managed redundantly by both conda and pip. pip check is a tool that finds conflicts in Python package metadata and does not verify all native ABI compatibility.
conda run -n data-lab python -m pip check
6. Match the Jupyter kernel to the environment
conda run -n data-lab python -m ipykernel install --user \
--name data-lab --display-name "Python (data-lab)"
Just because the Jupyter screen is opened does not mean that the laptop uses data-lab’s Python. Select Python (data-lab) from the Kernel menu, and then check import sys; print(sys.executable) in the cell. Kernel registration is a procedure that tells Jupyter the Python path to run. IPython kernel installation document describes this configuration.
To run the server in this environment, add JupyterLab as follows. For an individual lab, bind it to loopback and forward remote access through an SSH tunnel. Do not disable authentication tokens.
conda install -n data-lab --override-channels -c conda-forge jupyterlab
conda run -n data-lab jupyter lab --no-browser --ip=127.0.0.1 --port=8888
You can open ssh -N -L 18888:127.0.0.1:8888 labadmin@서버주소 on your PC and use the token provided by the server to connect to http://127.0.0.1:18888 on your PC. Since the Jupyter installation has been added here, we also need to re-record the required environment specifications/snapshots.
Fits the analysis environment, but is not the default for all projects
conda is a useful option for combining data analysis and native packages. Instead, you need to manage channel, build, and environment capacity, and accurate restoration does not end with just saving the environment YAML. For general web services, it is often sufficient to start with a package structure independent of uv, such as the following 04 Web Development.
Download series example file·venv·conda specification, uv·web·data·OCR example source, and confirmed uv lock file are bundled. It is executed from each project directory, and the OS package is prepared separately through the procedures in the main text.



