I am building a python function. When I run it locally, everything works as expected. When I try to deploy it (using GitHub Actions), the deployment is successful, but the function can not be started, because it throws an error. As you can see in the following picture, the build process works fine and I can run the function_app.py in the generated folder, when extracting the zip. However, when I look into the azure function logs, I see that the function has been started with 0 routes mapped. Here are the logs from the function startup: 4/11/2025, 2:42:50.361 PM Job host started 1 4/11/2025, 2:42:49.565 PM Initializing Warmup Extension. 1 4/11/2025, 2:42:49.571 PM Initializing Host. OperationId: '1393eee4-b797-4b1e-ba9f-7863e0b9f902'. 1 4/11/2025, 2:42:49.571 PM Host initialization: ConsecutiveErrors=0, StartupCount=3, OperationId=1393eee4-b797-4b1e-ba9f-7863e0b9f902 1 4/11/2025, 2:42:49.575 PM Traceback (most recent call last): 1 4/11/2025, 2:42:49.575 PM File "/azure-functions-host/workers/python/3.11/LINUX/X64/azure_functions_worker/utils/wrappers.py", line 44, in call 1 4/11/2025, 2:42:49.575 PM return func(*args, **kwargs) 1 4/11/2025, 2:42:49.575 PM ^^^^^^^^^^^^^^^^^^^^^ 1 4/11/2025, 2:42:49.575 PM File "/azure-functions-host/workers/python/3.11/LINUX/X64/azure_functions_worker/loader.py", line 244, in index_function_app 1 4/11/2025, 2:42:49.575 PM imported_module = importlib.import_module(module_name) 1 4/11/2025, 2:42:49.575 PM ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 4/11/2025, 2:42:49.575 PM File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module 1 4/11/2025, 2:42:49.575 PM return _bootstrap._gcd_import(name[level:], package, level) 1 4/11/2025, 2:42:49.575 PM ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 4/11/2025, 2:42:49.575 PM File "<frozen importlib._bootstrap>", line 1204, in _gcd_import 1 4/11/2025, 2:42:49.575 PM File "<frozen importlib._bootstrap>", line 1176, in _find_and_load 1 4/11/2025, 2:42:49.575 PM File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked 1 4/11/2025, 2:42:49.575 PM File "<frozen importlib._bootstrap>", line 690, in _load_unlocked 1 4/11/2025, 2:42:49.575 PM File "<frozen importlib._bootstrap_external>", line 940, in exec_module 1 4/11/2025, 2:42:49.575 PM File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed 1 4/11/2025, 2:42:49.575 PM File "/home/site/wwwroot/function_app.py", line 4, in <module> 1 4/11/2025, 2:42:49.575 PM from azure.data.tables import TableClient, TableServiceClient 1 4/11/2025, 2:42:49.575 PM ModuleNotFoundError: No module named 'azure.data' 3 What's the problem here? The function does start up, but gets caught on line 4 of the function_app.py - here's the line in code: from azure.data.tables import TableClient, TableServiceClient Really appreciate any insights here PS: of course the dependency is listed in requirements.txt in case you were wondering - that's why it also runs anywhere else but when deployed. Edit: The workflow file is this: # Docs for the Azure Web Apps Deploy action: https://github.com/azure/functions-action # More GitHub Actions for Azure: https://github.com/Azure/actions # More info on Python, GitHub Actions, and Azure Functions: https://aka.ms/python-webapps-actions name: Deploy on: push: branches: - test workflow_dispatch: env: AZURE_FUNCTIONAPP_PACKAGE_PATH: './api' # set this to the path to your web app project, defaults to the repository root PYTHON_VERSION: '3.11' # set this to the python version to use (supports 3.6, 3.7, 3.8) AZURE_STORAGE_CONNECTION_STRING: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} AZURE_COSMOS_CONNECTION_STRING: ${{ secrets.AZURE_COSMOS_CONNECTION_STRING }} jobs: build: runs-on: ubuntu-latest permissions: contents: read #This is required for actions/checkout steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Python version uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} - name: Copy /shared to /api run: cp -r ./shared ./api/ - name: Create and start virtual environment run: | python3 -m venv venv source venv/bin/activate - name: Install dependencies (api) run: pip3 install -r ./api/requirements.txt # Optional: Add step to run tests here - name: Test function app run: python3 ./api/function_app.py # end of tests - name: Zip artifact for deployment run: zip release.zip ./api/* -r - name: Upload artifact for deployment job uses: actions/upload-artifact@v4 with: name: python-app path: | release.zip deploy: runs-on: ubuntu-latest needs: build steps: - name: Download artifact from build job uses: actions/download-artifact@v4 with: name: python-app - name: Unzip artifact for deployment run: unzip release.zip - name: 'Deploy to Azure Functions' uses: Azure/functions-action@v1 id: deploy-to-function with: app-name: 'my_app' slot-name: 'Production' package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }} publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_XXXXXXXX }} sku: 'flexconsumption' Continue reading...