Galaxy Dependencies Management
Learning Questions
- How does Galaxy manage dependencies?
- What is the virtualenv used for?
- Where do JavaScript dependencies come from?
Learning Objectives
- Understand Python dependency management
- Understand JavaScript dependency management
- Learn about the wheels server
Dependencies - Python
script/common_startup.sh sets up a virtualenv with required dependencies in $GALAXY_ROOT/.venv (or $GALAXY_VIRTUAL_ENV if set).
- Check for existing virtual environment, if it doesn’t exist check for
virtualenv. - If
virtualenvexists, use it. Otherwise download it as a script and setup a virtual environment using it. . "$GALAXY_VIRTUAL_ENV/bin/activate"- Upgrade to latest
pipto allow use of binary wheels. pip install -r requirements.txt --index-url https://wheels.galaxyproject.org/simple- Install dozens of dependencies.
Dependencies - JavaScript
- Dependencies are defined in
client/package.json. - These are fetched from npm and compiled into bundles as part of
make clientand relatedMakefiletargets.
Key Takeaways
- Python: virtualenv with pip and wheels from galaxyproject.org
- JavaScript: npm/yarn with package.json
- No compilation required by default
- Binary wheels for fast installation