Python packages

PsyNet experiments can include arbitrary Python packages as dependencies. Such dependencies should be specified in requirements.txt, with one line per dependency.

If you specify a package simply as its name, then the latest version of this package will be pulled from the PyPi repository when you deploy the experiment. If running your experiment using the Docker workflow, this package will be automatically installed when you next run bash docker/psynet debug; if you are running your experiment in a local virtual environment then you will have to install that package manually using pip.


You can pin a particular package version using == notation:


You can specify dependencies on packages hosted on version control systems using the following notation:


Here the string after the @ symbol is the commit hash. This could equivalently be a branch name or a tag name.

System dependencies

It is also possible to specify arbitrary system dependencies if you are using PsyNet with Docker. To do this, add a file called to your experiment directory. This should be a Linux shell script. You might include something like the following, to install the unzip utility:

apt update
apt install unzip


This shell script should not place any files into the experiment directory itself, as these files won’t be accessible during psynet debug local, which overlays the local machine’s experiment directory onto the Docker container’s experiment directory. If you need to store files at this point you can put them elsewhere in the container.