Proper setup with Python 3

I’m setting up a Girder instance on an Amazon Lightsail box. The box comes with Python 2 (python) and Python 3 (python3) installed.

I’m wondering what is the right approach to setup Girder using Python 3, since 2 is deprecated.

So far, I have a bash script for the box that looks like this:

sudo curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -

sudo apt update && sudo apt install -y --no-install-recommends nodejs golang-go python-pip python-virtualenv virtualenv

virtualenv girder_env
source girder_env/bin/activate

pip install -U pip setuptools dnspython girder girder-homepage girder-worker large-image[all] girder-large-image-annotation[tasks] --find-links https://girder.github.io/large_image_wheels histomicsui --find-links https://girder.github.io/large_image_wheels

girder build

girder serve --host 0.0.0.0 --database [database URL]

I tried replacing the python-pip install with python3-pip, and then the pip install line with pip3 install. That part all worked fine, but then the girder build line throws the error:

girder: command not found

If I try to run the pip install without the 3, I get the Python 2 deprecated warning.

Is there something I’m missing here? Sorry if this is a stupid question. I’m not a Python developer.

You should create your virtual environment with

virtualenv -p python3 girder_env

From there, you can keep everything the same as it will use the pip installed within your virtual environment.

One other minor point, you should upgrade pip and setuptools before installing the rest of the packages. When you do it in the same line, the upgraded versions aren’t actually used.

Ok cool. This was super helpful. I realize this was more related to virtualenv than Girder now. With those changes, everything built as expected.