Silk Web Hosting: Python
ModifiedChoosing a version
You can choose among multiple versions of Python:
Silk platform | Python version | Command-line path | Sunset Date |
---|---|---|---|
silkv2 | 3.8 (default) | /usr/local/bin/python38 | October 2024 |
3.10 | /opt/python/python-3.10/bin/python3.10 | October 2026 | |
silkv3 | 3.8 | /opt/mise/installs/python/3.8/bin/python | October 2024 |
3.10 (default) | /opt/mise/installs/python/3.10/bin/python | October 2026 | |
3.12 | /opt/mise/installs/python/3.12/bin/python | October 2028 |
If you need to switch Python versions, you can do so by creating or editing
your site’s .silk.ini
file (for example ~/www-root/.silk.ini
) and adding the
version to the [python]
section:
[python]
version = 3.10
Valid version choices are default
, any of the versions listed in the table
above, or newest
(which provides the newest available on the system).
Modules
Python modules are managed using the pip
command.
You can see which modules are currently installed by typing pip list
, or see
which you have installed yourself with pip list --user
.
Additional modules can be installed by typing pip install --user <modulename>
,
which will place them in your home directory, under ~/.local/
.
Scripts or commands included with a module are placed in ~/.local/bin/
and
can either be run directly from there or added to your PATH by adding a line
such as the following to ~/.bash_profile
:
export PATH=~/.local/bin:$PATH
Web applications
Python web apps are written using the WSGI model and use NGINX Unit as an application server. You can run an application by doing the following:
-
Edit the
.silk.ini
file in your site root. Add a section similar to the following.[app] type = python root = myapp uri = /* document-root = public startup-script = wsgi.py venv-path = /users/m/y/mynetid/myapp-venv env.MYVAR = some value
The
.silk.ini
section name should be either “app” or any descriptive name you wish for your application that starts with “app: “. This could be useful if you wish to configure multiple apps.root is an optional directory under your site root containing all your application files.
uri is a pattern matching the part of a web request URL after the hostname that should match this application, usually ending in
*
. For example,/*
matches all pages, while/myapp*
matches all pages that begin with/myapp
.document-root is the directory under your app root in which static files will be located.
startup-script is the name of the script launching your application, which should have executable permissions (
chmod u+x wsgy.py
).venv-path is an optional filesystem path to a Python virtual environment containing your application’s module dependencies. The Python command located here will not be used, but the modules will be available to your application.
Any line beginning with env. will set an environment variable available within your application.
-
If this is the first web application in your site, a new app server will be started for your account within ten minutes.
-
Load your application with
silk app <hostname> load
. If you have multiple sites and/or multiple apps,<hostname>
is followed by the URI path of your app, such asdev.mynetid.w3.uvm.edu/app2
. If you see an error, check the app server log for details.
Reloading applications
An application needs to be restarted for code changes to take effect. You can do this the same way you originally loaded your application:
[myusername@silk21 ~]$ silk app <hostname> load
Console logs
App server logs are available at /usr/lib/unit-user-<mynetid>/unit.log
.