FAQ#
Installing PyTorch#
If you’re deploying Docker apps using a free account, your build might fail if it takes too many resources. To fix it, you can install the CPU-only version of PyTorch. Add the following to your Dockerfile
before any packages that have PyTorch as a dependency
# install the cpu-only torch (or any other torch-related packages)
# you might modify it to install another version
RUN pip install torch==2.1.1 torchvision==0.16.1 --index-url https://download.pytorch.org/whl/cpu
# any packages that depend on pytorch must be installed after the previous RUN command
Installing OpenCV#
If you’re using OpenCV and your application gets stuck during deployment, ensure you check the Webservice logs
, if you’re using a base image that doesn’t have all dependencies required by OpenCV, you might run into issues like this one:
libGL.so.1: cannot open shared object file
If that’s the case, run the following before installing OpenCV, note that this requires your base image to use apt
as its package manager. We recommend you using the python:3.11
base image.
RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y
Installing geopandas/fiona/GDAL#
If you want to deploy an application that uses geopandas
, you can simply add it
to your requirements.txt
file:
geopandas
This will work as long as you’re deploying any of the officially supported frameworks
or if you’re using the Docker deployment option and using the python:3.11
base image.
Here’s a sample Voilà app.
geopandas
can be tricky to install because it depends on fiona
, which depends
on GDAL, fortunately, fiona
bundles GDAL
which simplifies installation, this allows geopandas
to work by adding it to the requirements.txt
file.
The caveat of this method is that the bundled GDAL is not fully-featured and omits many GDAL’s optional drivers. If you require a full-fledged GDAL version on your application, you can do it by using the Docker deployment option and installing GDAL in your Docker image. Here’s a sample app.
Pinning dependencies#
When deploying an app, you need to add your dependencies in a requirements.txt
file,
here’s an example:
pandas
numpy
matplotlib
However, this requirements.txt
might break your app during a re-deployment if any of
the packages changes their API. To prevent that, you can
pin your dependencies once your app is running locally.
Rename requirements.txt
to requirements.unpinned.txt
, and
then generate a new requirements.txt
with:
pip freeze > requirements.txt
This will produce a new requirements.txt
file with specific versions
for each package, ensuring that upgrades to the dependencies don’t break your app.
Displaying Chinese characters#
If you’re using matplotlib and want to display Chinese characters in your plots, you might encounter issues. Most likely, you’re missing a font that allows you to display the characters. Check out this example, to test it, deploy it using the Docker option.
Stopping applications#
If you’re a community user (or a Pro user with >3 apps) you apps will be stopped if they don’t receive traffic.
When this happens, your app will show a screen like this:
When clicking on Spin up your application
your app will restart and be available
in ~1 minute.
You can also start your application from the dashboard:
Note
If you see an error after restarting, wait for a few seconds. If the issue still persists, contact us at contact@ploomber.io
Customize deployment#
You may want to deploy your application using Docker for customizing the process.
Here’s a few additional features that Docker
deployment allows:
Installing packages that are not available via pip, e.g.,
Shiny R
.Downloading specific modules, e.g.,
Spacy
models.Changing the Python version.
Customizing the Docker base image.
Adding a cache layer