Tencent Cloud SCF provides the following function deployment methods. For more information about how to create and update a function, see Create and Update a Function.
Currently, the SCF standard Python Runtime only supports writing to the /tmp
directory, and other directories are read-only. Therefore, you need to install, package and upload the local dependent library for use. The Python dependency package can be uploaded with function codes to the cloud, or uploaded to the layer that will be bound to the required function.
In Python, dependencies can be managed with the pip package manager. Replace pip
with pip3
or pip2
according to the environment configurations.
requirements.txt
.pip install -r requirements.txt -t .
command under the code directory to install the dependency package. You can use the -t
parameter to specify the installation directory, or directly run -t .
under the project’s code directory to install the dependency package in the current directory.Note:
- Use the
pip freeze > requirements.txt
command to generate arequirements.txt
file that contains all dependencies of the current environment.- Because the function is running on CentOS 7, install the dependency package in the same environment to avoid errors. For detailed directions, see Using Container Image.
- If some dependencies require dynamic link library, please manually copy these dependencies to the installation directory, and then package them for uploading. For more information, see Installing Dependency with Docker.
index.py
code file shown below to install the requests
dependency locally.# -*- coding: utf8 -*-
import requests
def main_handler(event, context):
addr = "www.qq.com"
resp = requests.get(addr)
print(resp)
return resp
pip3 install requests -t .
command to install the requests
dependency under the current directory of the project. The code file is as follows:$ pip3 install requests -t .
Collecting requests
Using cached requests-2.25.1-py2.py3-none-any.whl (61 kB)
Collecting certifi>=2017.4.17
Using cached certifi-2020.12.5-py2.py3-none-any.whl (147 kB)
Collecting chardet<5,>=3.0.2
Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB)
Collecting idna<3,>=2.5
Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Collecting urllib3<1.27,>=1.21.1
Using cached urllib3-1.26.4-py2.py3-none-any.whl (153 kB)
Installing collected packages: urllib3, idna, chardet, certifi, requests
Successfully installed certifi-2020.12.5 chardet-4.0.0 idna-2.10 requests-2.25.1 urllib3-1.26.4
$ ls -l
total 8
drwxr-xr-x 3 xxx 111 96 4 29 16:45 bin
drwxr-xr-x 7 xxx 111 224 4 29 16:45 certifi
drwxr-xr-x 8 xxx 111 256 4 29 16:45 certifi-2020.12.5.dist-info
drwxr-xr-x 44 xxx 111 1408 4 29 16:45 chardet
drwxr-xr-x 9 xxx 111 288 4 29 16:45 chardet-4.0.0.dist-info
drwxr-xr-x 11 xxx 111 352 4 29 16:45 idna
drwxr-xr-x 8 xxx 111 256 4 29 16:45 idna-2.10.dist-info
-rw-r--r--@ 1 xxx 111 177 4 29 16:33 index.py
drwxr-xr-x 21 xxx 111 672 4 29 16:45 requests
drwxr-xr-x 9 xxx 111 288 4 29 16:45 requests-2.25.1.dist-info
drwxr-xr-x 17 xxx 111 544 4 29 16:45 urllib3
drwxr-xr-x 10 xxx 111 320 4 29 16:45 urllib3-1.26.4.dist-info
You can upload dependencies together with the project, and use them through the import
statement in function codes. You can also package and deploy dependencies to a layer, and bind the layer to a function being created to reuse them.
The zip package for deploying functions or layers can be generated automatically by a local folder via the console or manually. All the packaging should be under the project directory to place codes and dependencies in the root directory of the zip package. For more information, see Packaging requirements.
Some Python dependencies such as the pycryptodome
dependency need to be compiled for installation. Because the compilation varies with the operating system, the dependent library, dynamic library, and other programs compiled on Windows or Mac may be unable to run in the SCF environment. The following solutions are recommended.
Was this page helpful?