Dependencies for python applications are declared in a standard
requirements.txt
file. For example:
Flask==MAJOR.MINOR.PATCH
google-cloud-storage
Replace MAJOR, MINOR, and PATCH with the desired Flask version numbers.
When you deploy to App Engine,
the dependencies specified in the requirements.txt
file will be installed
automatically with your deployed app. You can use any Linux-compatible Python
package, including packages that require native C extensions.
By default, App Engine caches fetched dependencies to reduce build times. To install an uncached version of the dependency, use the command:
gcloud app deploy --no-cache
Private dependencies with Artifact Registry
If you need to host private dependencies for your Python app, you can use an
Artifact Registry Python repository.
When deploying your app, the build process automatically generates Artifact Registry
credentials for the Cloud Build service account
so you won't need to generate additional credentials. To include private dependencies,
add the Artifact Registry URL and the relevant packages in your requirements.txt
file.
To specify multiple repositories, use an Artifact Registry virtual repository to safely control the order that pip searches your repositories. For example:
--index-url REPOSITORY_URL
sampleproject
Flask==MAJOR.MINOR.PATCH
google-cloud-storage
Replace REPOSITORY_URL with the registry address, such as:
https://REGION_ID-python.pkg.dev/PROJECT_ID/REPOSITORY_NAME/simple
Private dependencies with other repositories
Dependencies are installed in a Cloud Build environment that does not provide access to SSH keys. Packages hosted on repositories that require SSH-based authentication must be copied into your project directory and uploaded alongside your project's code using the pip package manager.
To use private dependencies:
Run
pip install -t lib my_module
to copy dependencies into a local folder namedlib
.Add an empty
__init__.py
file to thelib
directory to make it a module.Import the module in your app. For example:
import lib.my_module
Installing dependencies locally
When developing and testing your application locally, we recommended you use
venv
to isolate your application's dependencies from your system
packages. This also ensures that your dependencies will be the same version on
your local machine and the deployed application.
To use venv
to install dependencies, complete the following
steps:
Mac OS / Linux
- Create an
isolated Python environment:
python3 -m venv env
source env/bin/activate
- If you're not in the directory that contains the sample code, navigate
to the directory that contains the
hello_world
sample code. Then install dependencies:cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
Windows
Use PowerShell to run your Python packages.
- Locate your installation of PowerShell.
- Right-click on the shortcut to PowerShell and start it as an administrator.
- Create an
isolated Python environment.
python -m venv env
.\env\Scripts\activate
- Navigate to your project directory and install dependencies. If you're not in the directory
that contains the sample code, navigate to the directory that contains the
hello_world
sample code. Then, install dependencies:cd YOUR_SAMPLE_CODE_DIR
pip install -r requirements.txt
This ensures that when you run your app locally, only the
dependencies that are declared in the requirements.txt
file are available.
The dependencies installed by App Engine during deployment are based on
the contents of the requirements.txt
file, not the contents of the env/
directory.
Installing a web framework
You'll need to use a web framework to enable your app to serve web requests. You can use any Python web framework including the following:
To use a particular web framework, just add it to your requirements.txt
:
Flask==MAJOR.MINOR.PATCH
Installing a WSGI server
Some web frameworks have built-in WSGI servers; however, few of them are suitable for serving production traffic. Most web applications use a standalone WSGI server such as Gunicorn, uWSGI or Waitress. For more information on installing, configuring, and using a WSGI server see application startup.
Installing the Cloud Client Libraries
The Cloud Client Libraries for Python is a client library for accessing Google Cloud services that significantly reduces the boilerplate code you have to write. The library provides high-level API abstractions so they're easier to understand. It embraces idioms of Python, works well with the standard Python library, and integrates better with your codebase.
For example, you can install the corresponding Python client library for Datastore or Cloud Storage to integrate those services with your app.
To install the Python client library for Cloud Datastore:
Install the client library locally by using
pip
:pip install google-cloud-datastore
Set up authentication. You can configure the Cloud Client Libraries for Python to handle authentication automatically. The client library can automatically handle authentication for you locally as well by using the Google Cloud CLI.
gcloud auth login
Use the Datastore Client Libraries reference to implement support for the Cloud Datastore service in your app.
For a complete list of all of the Cloud Client Libraries for Python for the supported Google Cloud services, see APIs & Python Libraries.