Skip to main content
Learn how to migrate existing conda environments, requirements.txt files, and environment.yml files into Pixi workspaces.

Why Import Environments?

You may have existing projects using:
  • Conda environment.yml files
  • Pip requirements.txt files
  • Poetry or other dependency managers
Pixi can import these environments, preserving your dependencies while adding Pixi’s powerful features.

Before You Start

Ensure you have a Pixi workspace. If not, create one:
pixi init my-project
cd my-project
If you’re starting from scratch, you can combine pixi init and pixi import into one command - see pixi init —import below.

Importing Conda Environments

Import conda environment.yml files into your workspace.

Basic Import

1
Create an environment.yml
2
Example environment file:
3
name: data-science
channels: ["conda-forge"]
dependencies:
  - python=3.11
  - numpy
  - pandas
  - matplotlib
  - pip:
    - httpx
    - requests
4
Import the Environment
5
Import into your workspace:
6
pixi import environment.yml
7
What happens:
8
  • Creates a feature named “data-science” (from the name field)
  • Creates an environment with that feature
  • Adds conda dependencies to [feature.data-science.dependencies]
  • Adds pip dependencies to [feature.data-science.pypi-dependencies]
  • 9
    View the Result
    10
    Check your pixi.toml:
    11
    [feature.data-science]
    channels = ["conda-forge"]
    
    [feature.data-science.dependencies]
    python = "3.11.*"
    numpy = "*"
    pandas = "*"
    matplotlib = "*"
    
    [feature.data-science.pypi-dependencies]
    httpx = "*"
    requests = "*"
    
    [environments]
    data-science = { features = ["data-science"], no-default-feature = true }
    
    12
    Use the Environment
    13
    Run commands in the imported environment:
    14
    pixi run --environment data-science python -c "import numpy; print(numpy.__version__)"
    

    Import Options

    Customize the import with options:
    Import into a feature with a different name:
    pixi import --feature ml-tools environment.yml
    
    Result:
    [feature.ml-tools]
    channels = ["conda-forge"]
    
    [feature.ml-tools.dependencies]
    python = "3.11.*"
    numpy = "*"
    # ...
    
    [environments]
    ml-tools = { features = ["ml-tools"], no-default-feature = true }
    

    Merge into Existing Environments

    Import into an existing environment:
    1
    Create Base Environment
    2
    # base.yml
    name: base
    channels: ["conda-forge"]
    dependencies:
      - python
      - pip:
        - httpx
    
    3
    Import:
    4
    pixi import base.yml
    
    5
    Add More Dependencies
    6
    # extras.yml
    channels: ["conda-forge"]
    dependencies:
      - numpy
      - pandas
    
    7
    Import into the existing environment:
    8
    pixi import --feature numpy-tools --environment base extras.yml
    
    9
    Check the Result
    10
    [feature.base]
    channels = ["conda-forge"]
    
    [feature.base.dependencies]
    python = "*"
    
    [feature.base.pypi-dependencies]
    httpx = "*"
    
    [feature.numpy-tools]
    channels = ["conda-forge"]
    
    [feature.numpy-tools.dependencies]
    numpy = "*"
    pandas = "*"
    
    [environments]
    base = { features = ["base", "numpy-tools"], no-default-feature = true }
    

    Import into Default Environment

    Import dependencies into the default environment:
    pixi import --feature default environment.yml
    
    This adds dependencies to the top-level [dependencies] section.

    Importing PyPI Requirements

    Import pip requirements.txt files.

    Basic Import

    1
    Create requirements.txt
    2
    Example requirements file:
    3
    cowpy
    array-api-extra>=0.8
    requests==2.31.0
    httpx~=0.24.0
    
    4
    Import the File
    5
    Import with a feature name:
    6
    pixi import --format pypi-txt --feature python-tools requirements.txt
    
    7
    For PyPI imports, you must specify either --feature or --environment.
    8
    View the Result
    9
    [feature.python-tools.pypi-dependencies]
    cowpy = "*"
    array-api-extra = ">=0.8"
    requests = "==2.31.0"
    httpx = "~=0.24.0"
    
    [environments]
    python-tools = { features = ["python-tools"], no-default-feature = true }
    
    10
    Use the Environment
    11
    pixi run --environment python-tools python -c "import cowpy; print('Imported!')"
    
    12
    Expected Output:
    13
    Imported!
    

    Advanced Requirements

    Pixi supports various requirement formats:
    numpy>=1.20.0
    pandas==2.0.0
    matplotlib~=3.8.0
    scipy>=1.10,<2.0
    

    Multiple Requirements Files

    Import multiple files into the same environment:
    # Import base requirements
    pixi import --format pypi-txt --feature app requirements.txt
    
    # Import dev requirements into same environment
    pixi import --format pypi-txt --feature app-dev --environment app requirements-dev.txt
    

    Combining Init and Import

    Combine workspace creation and import in one command:

    Import Conda Environment

    Create a workspace from an environment.yml:
    pixi init --import environment.yml
    
    Result:
    [workspace]
    name = "data-science"  # From environment.yml name field
    authors = ["Your Name <you@example.com>"]
    channels = ["conda-forge"]
    platforms = ["linux-64"]
    version = "0.1.0"
    
    [dependencies]
    python = "3.11.*"
    numpy = "*"
    pandas = "*"
    
    [pypi-dependencies]
    httpx = "*"
    requests = "*"
    
    pixi init --import adds dependencies to the default environment, unlike pixi import which creates a new environment.

    Override Workspace Name

    Specify a custom workspace name:
    pixi init my-project --import environment.yml
    
    At the time of writing, pixi init --import only supports the conda-env format, not pypi-txt.

    Automatic Format Detection

    Pixi can detect the format automatically:
    pixi import environment.yml    # Detects conda-env format
    pixi import requirements.txt   # Detects pypi-txt format
    
    Or specify explicitly:
    pixi import --format conda-env environment.yml
    pixi import --format pypi-txt requirements.txt
    

    Real-World Examples

    Migrate a Data Science Project

    1
    Original Setup
    2
    # environment.yml
    name: ml-project
    channels:
      - conda-forge
      - pytorch
    dependencies:
      - python=3.11
      - pytorch
      - torchvision
      - numpy
      - pandas
      - matplotlib
      - jupyter
      - pip:
        - transformers
        - datasets
    
    3
    Import
    4
    pixi init
    pixi import environment.yml
    
    5
    Add Development Tools
    6
    pixi add --feature dev ruff mypy pytest
    pixi workspace environment add dev --feature ml-project --feature dev
    
    7
    Result
    8
    You now have:
    9
  • ml-project environment: Original dependencies
  • dev environment: Original dependencies + dev tools
  • Migrate a Web Application

    1
    Original Setup
    2
    # requirements.txt
    flask==3.0.0
    sqlalchemy==2.0.25
    celery==5.3.4
    redis==5.0.1
    python-dotenv==1.0.0
    gunicorn==21.2.0
    
    3
    # requirements-dev.txt
    pytest==8.0.0
    pytest-cov==4.1.0
    ruff==0.1.0
    black==23.12.0
    
    4
    Import
    5
    pixi init web-app
    pixi import --format pypi-txt --feature app requirements.txt
    pixi import --format pypi-txt --feature dev requirements-dev.txt
    
    6
    Create Environments
    7
    pixi workspace environment add production --feature app --no-default-feature
    pixi workspace environment add dev --feature app --feature dev --no-default-feature
    
    8
    Result
    9
    [feature.app.pypi-dependencies]
    flask = "==3.0.0"
    sqlalchemy = "==2.0.25"
    celery = "==5.3.4"
    redis = "==5.0.1"
    python-dotenv = "==1.0.0"
    gunicorn = "==21.2.0"
    
    [feature.dev.pypi-dependencies]
    pytest = "==8.0.0"
    pytest-cov = "==4.1.0"
    ruff = "==0.1.0"
    black = "==23.12.0"
    
    [environments]
    production = { features = ["app"], no-default-feature = true }
    dev = { features = ["app", "dev"], no-default-feature = true }
    

    Import from Poetry

    While Pixi doesn’t directly import pyproject.toml from Poetry, you can export and import:
    # Export from Poetry
    poetry export -f requirements.txt --output requirements.txt
    poetry export -f requirements.txt --only dev --output requirements-dev.txt
    
    # Import to Pixi
    pixi init
    pixi import --format pypi-txt --feature default requirements.txt
    pixi import --format pypi-txt --feature dev requirements-dev.txt
    

    Post-Import Tasks

    After importing, you may want to:

    Add Tasks

    Define common commands:
    [feature.data-science.tasks]
    notebook = "jupyter notebook"
    lab = "jupyter lab"
    analysis = "python analysis.py"
    

    Add More Dependencies

    pixi add --feature data-science scipy scikit-learn
    

    Create Additional Environments

    pixi workspace environment add test --feature data-science --feature test
    

    Update Lock File

    pixi install
    

    Troubleshooting

    Import Format Not Detected

    Specify the format explicitly:
    pixi import --format conda-env environment.yml
    pixi import --format pypi-txt requirements.txt
    

    Feature Name Required

    For PyPI imports, always specify a feature or environment:
    pixi import --feature my-feature requirements.txt
    

    Platform-Specific Dependencies

    Some dependencies may not be available on all platforms. Use platform-specific imports:
    pixi import --platform linux-64 environment.yml
    

    Version Conflicts

    If you encounter conflicts after import:
    1. Check the lock file: pixi lock
    2. Update specific packages: pixi update package-name
    3. Adjust version constraints in pixi.toml

    Best Practices

    Test after import: Always test your imported environments to ensure everything works.
    Use features for organization: Import related dependencies into separate features for better organization.
    Specify platforms: If your environment is platform-specific, use --platform to document this.
    Keep original files: Keep the original environment.yml or requirements.txt for reference during migration.

    Next Steps

    Future Improvements

    Pixi’s import capabilities are actively being developed: