name: inverse layout: true class: center, middle, inverse
---
# Architecture 13 - Galaxy Dependencies Management
John Chilton
last_modification
Updated:
text-document
Plain-text slides
|
Tip:
press
P
to view the presenter notes |
arrow-keys
Use arrow keys to move between slides
??? Presenter notes contain extra information which might be useful if you intend to use these slides for teaching. Press `P` again to switch presenter notes off Press `C` to create a new window where the same presentation will be displayed. This window is linked to the main window. Changing slides on one will cause the slide to change on the other. Useful when presenting. --- ### <i class="far fa-question-circle" aria-hidden="true"></i><span class="visually-hidden">question</span> Questions - How does Galaxy manage dependencies? - What is the virtualenv used for? - Where do JavaScript dependencies come from? --- ### <i class="fas fa-bullseye" aria-hidden="true"></i><span class="visually-hidden">objectives</span> Objectives - Understand Python dependency management - Understand JavaScript dependency management - Learn about the wheels server --- layout: introduction_slides topic_name: Galaxy Architecture # Architecture 13 - Galaxy Dependencies Management *The architecture of Galaxy's dependencies.* --- layout: true name: left-aligned class: left, middle --- layout: true class: center, middle --- ### 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 `virtualenv` exists, use it. Otherwise download it as a script and setup a virtual environment using it. - `. "$GALAXY_VIRTUAL_ENV/bin/activate"` - Upgrade to latest `pip` to 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 client` and related `Makefile` targets. .footnote[Previous: [Galaxy Client Architecture](/training-material/topics/dev/tutorials/architecture-client/slides.html) | Next: [Galaxy Startup Process](/training-material/topics/dev/tutorials/architecture-startup/slides.html)] --- ### <i class="fas fa-key" aria-hidden="true"></i><span class="visually-hidden">keypoints</span> Key points - 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 --- ## Thank You! This material is the result of a collaborative work. Thanks to the [Galaxy Training Network](https://training.galaxyproject.org) and all the contributors!
John Chilton
Tutorial Content is licensed under
Creative Commons Attribution 4.0 International License
.