microsoft/Oryx

Python package not available at Web Application startup despite successful Oryx build

djmeck opened this issue · 2 comments

Bug Report

  • At what date and time did you most recently experience the problem?

I am experiencing the problem right now.

  • Where did you experience the problem? E.g. Azure Web Apps, Azure Functions, Azure Container Registry, or offline use.

I am experiencing the problem on Azure Web Apps.

  • If your repo is publicly available please share its URL:

It is not.

  • What happened?

The Python module psycopg2 is not available during web application startup, despite Oryx installing the package into the virtual environment successfully. Using the Kudu Bash web UI, I can see all the packages installed into the antenv in the /tmp/_preCompressedDestinationDir, which according to the logs is compressed and moved to /home/site/wwwroot/output.tar.gz. I can download this file and verify the package is installed there. This is the archive that according to the logs is used by the web application at startup time.

  • What did you expect or want to happen?

I want the package that is installed into the antenv to be available to the web application at startup.

  • How can we reproduce it?

Linux App Service with Python 3.11 runtime, with the following requirements:

alembic==1.13.2; python_version >= '3.8'
annotated-types==0.7.0; python_version >= '3.8'
blinker==1.8.2; python_version >= '3.8'
certifi==2024.7.4; python_version >= '3.6'
charset-normalizer==3.3.2; python_full_version >= '3.7.0'
click==8.1.7; python_version >= '3.7'
dnspython==2.6.1; python_version >= '3.8'
email-validator==2.2.0
faker==27.4.0; python_version >= '3.8'
flask==3.0.3; python_version >= '3.8'
flask-openapi3==4.0.0rc2; python_version >= '3.8'
greenlet==3.0.3; python_version < '3.13' and (platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32'))))))
idna==3.7; python_version >= '3.5'
itsdangerous==2.2.0; python_version >= '3.8'
jinja2==3.1.4; python_version >= '3.7'
mako==1.3.5; python_version >= '3.8'
markupsafe==2.1.5; python_version >= '3.7'
numpy==1.26.4; python_version >= '3.9'
pandas==1.5.3; python_version >= '3.8'
psycopg==3.2.1; python_version >= '3.8'
pydantic[email]==2.8.2; python_version >= '3.8'
pydantic-core==2.20.1; python_version >= '3.8'
pydantic-settings==2.4.0; python_version >= '3.8'
python-dateutil==2.9.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'
python-dotenv==1.0.1; python_version >= '3.8'
pytz==2024.1
pyyaml==6.0.2; python_version >= '3.8'
requests==2.32.3; python_version >= '3.8'
six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'
sqlalchemy==2.0.32; python_version >= '3.7'
typing-extensions==4.12.2; python_version >= '3.8'
urllib3==2.2.2; python_version >= '3.8'
werkzeug==3.0.4; python_version >= '3.8'
  • Do you have log output? Please include between the backticks:

The Oryx build log showing the successful installation of all packages listed in my requirements.txt:

2024-08-23T18:43:09  Fetching changes.
2024-08-23T18:43:09    Cleaning up temp folders from previous zip deployments and extracting pushed zip file /tmp/zipdeploy/ec3cd1ca-58c0-488c-97e7-7769c1f5dcb9.zip (0.04 MB) to /tmp/zipdeploy/extracted
2024-08-23T18:43:13  Updating submodules.
2024-08-23T18:43:13  Preparing deployment for commit id 'b001bb80-5'.
2024-08-23T18:43:13  PreDeployment: context.CleanOutputPath False
2024-08-23T18:43:13  PreDeployment: context.OutputPath /home/site/wwwroot
2024-08-23T18:43:13  Repository path is /tmp/zipdeploy/extracted
2024-08-23T18:43:13  Running oryx build...
2024-08-23T18:43:13    Command: oryx build /tmp/zipdeploy/extracted -o /home/site/wwwroot --platform python --platform-version 3.11 -p virtualenv_name=antenv --log-file /tmp/build-debug.log  -i /tmp/8dcc3a371832e27 --compress-destination-dir | tee /tmp/oryx-build.log
2024-08-23T18:43:13    Operation performed by Microsoft Oryx, https://github.com/Microsoft/Oryx
2024-08-23T18:43:13    You can report issues at https://github.com/Microsoft/Oryx/issues
2024-08-23T18:43:13    
2024-08-23T18:43:13    Oryx Version: 0.2.20240424.1, Commit: d37b2225a252ab2c04b4726024d047cf01ea1318, ReleaseTagName: 20240424.1
2024-08-23T18:43:13    
2024-08-23T18:43:13    Build Operation ID: 68a2607b8628832e
2024-08-23T18:43:13    Repository Commit : b001bb80-5791-4554-9717-e9ad69ad9b15
2024-08-23T18:43:13    OS Type           : bullseye
2024-08-23T18:43:13    Image Type        : githubactions
2024-08-23T18:43:13    
2024-08-23T18:43:13    Detecting platforms...
2024-08-23T18:43:14    Detected following platforms:
2024-08-23T18:43:14      python: 3.11.8
2024-08-23T18:43:14    
2024-08-23T18:43:14    Using intermediate directory '/tmp/8dcc3a371832e27'.
2024-08-23T18:43:14    
2024-08-23T18:43:15    Copying files to the intermediate directory...
2024-08-23T18:43:15    Done in 1 sec(s).
2024-08-23T18:43:15    
2024-08-23T18:43:15    Source directory     : /tmp/8dcc3a371832e27
2024-08-23T18:43:15    Destination directory: /home/site/wwwroot
2024-08-23T18:43:15    
2024-08-23T18:43:15    Python Version: /tmp/oryx/platforms/python/3.11.8/bin/python3.11
2024-08-23T18:43:15    Creating directory for command manifest file if it does not exist
2024-08-23T18:43:15    Removing existing manifest file
2024-08-23T18:43:15    Python Virtual Environment: antenv
2024-08-23T18:43:15    Creating virtual environment...
2024-08-23T18:43:18    Activating virtual environment...
2024-08-23T18:43:18    Running pip install...
2024-08-23T18:43:33    [18:43:18+0000] adding trusted host: <REDACTED> (from line 3 of requirements.txt)
2024-08-23T18:43:33    [18:43:18+0000] Looking in indexes: https://pypi.python.org/simple, <REDACTED>
2024-08-23T18:43:33    [18:43:19+0000] Collecting alembic==1.13.2 (from -r requirements.txt (line 4))
2024-08-23T18:43:33    [18:43:19+0000]   Using cached alembic-1.13.2-py3-none-any.whl.metadata (7.4 kB)
2024-08-23T18:43:33    [18:43:19+0000] Collecting annotated-types==0.7.0 (from -r requirements.txt (line 5))
2024-08-23T18:43:33    [18:43:19+0000]   Using cached annotated_types-0.7.0-py3-none-any.whl.metadata (15 kB)
2024-08-23T18:43:33    [18:43:19+0000] Collecting blinker==1.8.2 (from -r requirements.txt (line 6))
2024-08-23T18:43:33    [18:43:19+0000]   Using cached blinker-1.8.2-py3-none-any.whl.metadata (1.6 kB)
2024-08-23T18:43:33    [18:43:19+0000] Collecting certifi==2024.7.4 (from -r requirements.txt (line 7))
2024-08-23T18:43:33    [18:43:19+0000]   Using cached certifi-2024.7.4-py3-none-any.whl.metadata (2.2 kB)
2024-08-23T18:43:33    [18:43:19+0000] Collecting charset-normalizer==3.3.2 (from -r requirements.txt (line 8))
2024-08-23T18:43:33    [18:43:19+0000]   Using cached charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (33 kB)
2024-08-23T18:43:33    [18:43:19+0000] Collecting click==8.1.7 (from -r requirements.txt (line 9))
2024-08-23T18:43:33    [18:43:19+0000]   Using cached click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
2024-08-23T18:43:33    [18:43:19+0000] Collecting dnspython==2.6.1 (from -r requirements.txt (line 10))
2024-08-23T18:43:33    [18:43:19+0000]   Using cached dnspython-2.6.1-py3-none-any.whl.metadata (5.8 kB)
2024-08-23T18:43:33    [18:43:19+0000] Collecting email-validator==2.2.0 (from -r requirements.txt (line 11))
2024-08-23T18:43:33    [18:43:19+0000]   Using cached email_validator-2.2.0-py3-none-any.whl.metadata (25 kB)
2024-08-23T18:43:33    [18:43:19+0000] Collecting faker==27.4.0 (from -r requirements.txt (line 12))
2024-08-23T18:43:33    [18:43:19+0000]   Using cached Faker-27.4.0-py3-none-any.whl.metadata (15 kB)
2024-08-23T18:43:33    [18:43:19+0000] Collecting <REDACTED> (from -r requirements.txt (line 13))
2024-08-23T18:43:33    [18:43:19+0000]   Using cached <REDACTED> (27 kB)
2024-08-23T18:43:33    [18:43:20+0000] Collecting flask==3.0.3 (from -r requirements.txt (line 14))
2024-08-23T18:43:33    [18:43:20+0000]   Using cached flask-3.0.3-py3-none-any.whl.metadata (3.2 kB)
2024-08-23T18:43:33    [18:43:20+0000] Collecting flask-openapi3==4.0.0rc2 (from -r requirements.txt (line 15))
2024-08-23T18:43:33    [18:43:20+0000]   Using cached flask_openapi3-4.0.0rc2-py3-none-any.whl.metadata (8.5 kB)
2024-08-23T18:43:33    [18:43:20+0000] Collecting greenlet==3.0.3 (from -r requirements.txt (line 16))
2024-08-23T18:43:33    [18:43:20+0000]   Using cached greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.metadata (3.8 kB)
2024-08-23T18:43:33    [18:43:20+0000] Collecting idna==3.7 (from -r requirements.txt (line 17))
2024-08-23T18:43:33    [18:43:20+0000]   Using cached idna-3.7-py3-none-any.whl.metadata (9.9 kB)
2024-08-23T18:43:33    [18:43:20+0000] Collecting itsdangerous==2.2.0 (from -r requirements.txt (line 18))
2024-08-23T18:43:33    [18:43:20+0000]   Using cached itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB)
2024-08-23T18:43:33    [18:43:20+0000] Collecting jinja2==3.1.4 (from -r requirements.txt (line 19))
2024-08-23T18:43:33    [18:43:20+0000]   Using cached jinja2-3.1.4-py3-none-any.whl.metadata (2.6 kB)
2024-08-23T18:43:33    [18:43:20+0000] Collecting mako==1.3.5 (from -r requirements.txt (line 20))
2024-08-23T18:43:33    [18:43:20+0000]   Using cached Mako-1.3.5-py3-none-any.whl.metadata (2.9 kB)
2024-08-23T18:43:33    [18:43:20+0000] Collecting markupsafe==2.1.5 (from -r requirements.txt (line 21))
2024-08-23T18:43:33    [18:43:20+0000]   Using cached MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.0 kB)
2024-08-23T18:43:33    [18:43:20+0000] Collecting numpy==1.26.4 (from -r requirements.txt (line 22))
2024-08-23T18:43:33    [18:43:20+0000]   Using cached numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (61 kB)
2024-08-23T18:43:33    [18:43:20+0000] Collecting pandas==1.5.3 (from -r requirements.txt (line 23))
2024-08-23T18:43:33    [18:43:20+0000]   Using cached pandas-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
2024-08-23T18:43:33    [18:43:21+0000] Collecting psycopg==3.2.1 (from -r requirements.txt (line 24))
2024-08-23T18:43:33    [18:43:21+0000]   Using cached psycopg-3.2.1-py3-none-any.whl.metadata (4.2 kB)
2024-08-23T18:43:33    [18:43:21+0000] Collecting pydantic==2.8.2 (from pydantic[email]==2.8.2->-r requirements.txt (line 25))
2024-08-23T18:43:33    [18:43:21+0000]   Using cached pydantic-2.8.2-py3-none-any.whl.metadata (125 kB)
2024-08-23T18:43:33    [18:43:21+0000] Collecting pydantic-core==2.20.1 (from -r requirements.txt (line 26))
2024-08-23T18:43:33    [18:43:21+0000]   Using cached pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.6 kB)
2024-08-23T18:43:33    [18:43:21+0000] Collecting pydantic-settings==2.4.0 (from -r requirements.txt (line 27))
2024-08-23T18:43:33    [18:43:21+0000]   Using cached pydantic_settings-2.4.0-py3-none-any.whl.metadata (3.5 kB)
2024-08-23T18:43:33    [18:43:21+0000] Collecting python-dateutil==2.9.0.post0 (from -r requirements.txt (line 28))
2024-08-23T18:43:33    [18:43:21+0000]   Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
2024-08-23T18:43:33    [18:43:21+0000] Collecting python-dotenv==1.0.1 (from -r requirements.txt (line 29))
2024-08-23T18:43:33    [18:43:21+0000]   Using cached python_dotenv-1.0.1-py3-none-any.whl.metadata (23 kB)
2024-08-23T18:43:33    [18:43:22+0000] Collecting pytz==2024.1 (from -r requirements.txt (line 30))
2024-08-23T18:43:33    [18:43:22+0000]   Using cached pytz-2024.1-py2.py3-none-any.whl.metadata (22 kB)
2024-08-23T18:43:33    [18:43:22+0000] Collecting pyyaml==6.0.2 (from -r requirements.txt (line 31))
2024-08-23T18:43:33    [18:43:22+0000]   Using cached PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
2024-08-23T18:43:33    [18:43:22+0000] Collecting requests==2.32.3 (from -r requirements.txt (line 32))
2024-08-23T18:43:33    [18:43:22+0000]   Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
2024-08-23T18:43:33    [18:43:22+0000] Collecting six==1.16.0 (from -r requirements.txt (line 33))
2024-08-23T18:43:33    [18:43:22+0000]   Using cached six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
2024-08-23T18:43:33    [18:43:22+0000] Collecting sqlalchemy==2.0.32 (from -r requirements.txt (line 34))
2024-08-23T18:43:33    [18:43:22+0000]   Using cached SQLAlchemy-2.0.32-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (9.6 kB)
2024-08-23T18:43:34    [18:43:22+0000] Collecting typing-extensions==4.12.2 (from -r requirements.txt (line 35))
2024-08-23T18:43:34    [18:43:22+0000]   Using cached typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
2024-08-23T18:43:34    [18:43:22+0000] Collecting urllib3==2.2.2 (from -r requirements.txt (line 36))
2024-08-23T18:43:34    [18:43:22+0000]   Using cached urllib3-2.2.2-py3-none-any.whl.metadata (6.4 kB)
2024-08-23T18:43:34    [18:43:22+0000] Collecting werkzeug==3.0.4 (from -r requirements.txt (line 37))
2024-08-23T18:43:34    [18:43:22+0000]   Using cached werkzeug-3.0.4-py3-none-any.whl.metadata (3.7 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached alembic-1.13.2-py3-none-any.whl (232 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached annotated_types-0.7.0-py3-none-any.whl (13 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached blinker-1.8.2-py3-none-any.whl (9.5 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached certifi-2024.7.4-py3-none-any.whl (162 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (140 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached click-8.1.7-py3-none-any.whl (97 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached dnspython-2.6.1-py3-none-any.whl (307 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached email_validator-2.2.0-py3-none-any.whl (33 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached Faker-27.4.0-py3-none-any.whl (1.8 MB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached flask-3.0.3-py3-none-any.whl (101 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached flask_openapi3-4.0.0rc2-py3-none-any.whl (46 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (620 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached idna-3.7-py3-none-any.whl (66 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached itsdangerous-2.2.0-py3-none-any.whl (16 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached jinja2-3.1.4-py3-none-any.whl (133 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached Mako-1.3.5-py3-none-any.whl (78 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (28 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.3 MB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached pandas-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.0 MB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached psycopg-3.2.1-py3-none-any.whl (197 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached pydantic-2.8.2-py3-none-any.whl (423 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached pydantic_settings-2.4.0-py3-none-any.whl (23 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached python_dotenv-1.0.1-py3-none-any.whl (19 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached pytz-2024.1-py2.py3-none-any.whl (505 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (762 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached requests-2.32.3-py3-none-any.whl (64 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached SQLAlchemy-2.0.32-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached typing_extensions-4.12.2-py3-none-any.whl (37 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached urllib3-2.2.2-py3-none-any.whl (121 kB)
2024-08-23T18:43:34    [18:43:23+0000] Using cached werkzeug-3.0.4-py3-none-any.whl (227 kB)
2024-08-23T18:43:34    [18:43:23+0000] Installing collected packages: pytz, urllib3, typing-extensions, six, pyyaml, python-dotenv, numpy, markupsafe, itsdangerous, idna, greenlet, dnspython, click, charset-normalizer, certifi, blinker, annotated-types, werkzeug, sqlalchemy, requests, python-dateutil, pydantic-core, psycopg, mako, jinja2, email-validator, pydantic, pandas, flask, faker, alembic, pydantic-settings, flask-openapi3, <REDACTED>
2024-08-23T18:43:34    [18:43:32+0000] Successfully installed alembic-1.13.2 annotated-types-0.7.0 blinker-1.8.2 certifi-2024.7.4 charset-normalizer-3.3.2 click-8.1.7 dnspython-2.6.1 email-validator-2.2.0 faker-27.4.0 <REDACTED> flask-3.0.3 flask-openapi3-4.0.0rc2 greenlet-3.0.3 idna-3.7 itsdangerous-2.2.0 jinja2-3.1.4 mako-1.3.5 markupsafe-2.1.5 numpy-1.26.4 pandas-1.5.3 psycopg-3.2.1 pydantic-2.8.2 pydantic-core-2.20.1 pydantic-settings-2.4.0 python-dateutil-2.9.0.post0 python-dotenv-1.0.1 pytz-2024.1 pyyaml-6.0.2 requests-2.32.3 six-1.16.0 sqlalchemy-2.0.32 typing-extensions-4.12.2 urllib3-2.2.2 werkzeug-3.0.4
2024-08-23T18:43:34    
2024-08-23T18:43:34    [notice] A new release of pip is available: 24.0 -> 24.2
2024-08-23T18:43:34    [notice] To update, run: pip install --upgrade pip
2024-08-23T18:43:34    Not a vso image, so not writing build commands
2024-08-23T18:43:34    Preparing output...
2024-08-23T18:43:34    
2024-08-23T18:43:34    Copying files to destination directory '/tmp/_preCompressedDestinationDir'...
2024-08-23T18:43:35    Done in 2 sec(s).
2024-08-23T18:43:35    Compressing content of directory '/tmp/_preCompressedDestinationDir'...
2024-08-23T18:43:46    Copied the compressed output to '/home/site/wwwroot'
2024-08-23T18:43:46    
2024-08-23T18:43:46    Removing existing manifest file
2024-08-23T18:43:46    Creating a manifest file...
2024-08-23T18:43:46    Manifest file created.
2024-08-23T18:43:46    Copying .ostype to manifest output directory.
2024-08-23T18:43:46    
2024-08-23T18:43:46    Done in 32 sec(s).
2024-08-23T18:43:46  Running post deployment command(s)...
2024-08-23T18:43:46  
2024-08-23T18:43:46  Generating summary of Oryx build
2024-08-23T18:43:46  Parsing the build logs
2024-08-23T18:43:46  Found 0 issue(s)
2024-08-23T18:43:46  
2024-08-23T18:43:46  Build Summary :
2024-08-23T18:43:46  ===============
2024-08-23T18:43:46  Errors (0)
2024-08-23T18:43:46  Warnings (0)
2024-08-23T18:43:46  
2024-08-23T18:43:46  Triggering container recycle for OneDeploy by adding/updating restartTrigger.txt to the site root path
2024-08-23T18:43:46  Deployment successful. deployer = OneDeploy deploymentPath = OneDeploy

The web application startup log showing the failure to find the package:


2024-08-23T18:45:47.794799467Z    _____                               
2024-08-23T18:45:47.794827867Z   /  _  \ __________ _________   ____  
2024-08-23T18:45:47.794832767Z  /  /_\  \\___   /  |  \_  __ \_/ __ \ 
2024-08-23T18:45:47.794837267Z /    |    \/    /|  |  /|  | \/\  ___/ 
2024-08-23T18:45:47.794841467Z \____|__  /_____ \____/ |__|    \___  >
2024-08-23T18:45:47.794845467Z         \/      \/                  \/ 
2024-08-23T18:45:47.794849367Z A P P   S E R V I C E   O N   L I N U X
2024-08-23T18:45:47.794853267Z 
2024-08-23T18:45:47.794857367Z Documentation: http://aka.ms/webapp-linux
2024-08-23T18:45:47.794861567Z Python 3.11.8
2024-08-23T18:45:47.794865667Z Note: Any data outside '/home' is not persisted
2024-08-23T18:45:48.280107183Z Starting OpenBSD Secure Shell server: sshd.
2024-08-23T18:45:48.284017278Z WEBSITES_INCLUDE_CLOUD_CERTS is not set to true.
2024-08-23T18:45:48.310539440Z App Command Line not configured, will attempt auto-detect
2024-08-23T18:45:48.310590640Z Launching oryx with: create-script -appPath /home/site/wwwroot -output /opt/startup/startup.sh -virtualEnvName antenv -defaultApp /opt/defaultsite
2024-08-23T18:45:48.314378535Z Found build manifest file at '/home/site/wwwroot/oryx-manifest.toml'. Deserializing it...
2024-08-23T18:45:48.315542333Z Build Operation ID: 68a2607b8628832e
2024-08-23T18:45:48.316126533Z Oryx Version: 0.2.20240501.1, Commit: f83f88d3cfb8bb6d3e2765e1dcd218eb0814a095, ReleaseTagName: 20240501.1
2024-08-23T18:45:48.316144733Z Output is compressed. Extracting it...
2024-08-23T18:45:48.316695232Z Extracting '/home/site/wwwroot/output.tar.gz' to directory '/tmp/8dcc3a371832e27'...
2024-08-23T18:45:50.730334434Z App path is set to '/tmp/8dcc3a371832e27'
2024-08-23T18:45:50.868641439Z Detected an app based on Flask
2024-08-23T18:45:50.869421838Z Generating `gunicorn` command for 'app:app'
2024-08-23T18:45:50.894139503Z Writing output script to '/opt/startup/startup.sh'
2024-08-23T18:45:50.967234501Z Using packages from virtual environment antenv located at /tmp/8dcc3a371832e27/antenv.
2024-08-23T18:45:50.967295300Z Updated PYTHONPATH to '/opt/startup/app_logs:/tmp/8dcc3a371832e27/antenv/lib/python3.11/site-packages'
2024-08-23T18:45:51.147252747Z [2024-08-23 18:45:51 +0000] [72] [INFO] Starting gunicorn 22.0.0
2024-08-23T18:45:51.153246139Z [2024-08-23 18:45:51 +0000] [72] [INFO] Listening at: http://0.0.0.0:8000 (72)
2024-08-23T18:45:51.153267139Z [2024-08-23 18:45:51 +0000] [72] [INFO] Using worker: sync
2024-08-23T18:45:51.156176435Z [2024-08-23 18:45:51 +0000] [75] [INFO] Booting worker with pid: 75
2024-08-23T18:45:54.147837925Z [2024-08-23 18:45:54 +0000] [75] [ERROR] Exception in worker process
2024-08-23T18:45:54.147872725Z Traceback (most recent call last):
2024-08-23T18:45:54.147988325Z   File "/opt/python/3.11.8/lib/python3.11/site-packages/gunicorn/arbiter.py", line 609, in spawn_worker
2024-08-23T18:45:54.148007225Z     worker.init_process()
2024-08-23T18:45:54.148011925Z   File "/opt/python/3.11.8/lib/python3.11/site-packages/gunicorn/workers/base.py", line 134, in init_process
2024-08-23T18:45:54.148016625Z     self.load_wsgi()
2024-08-23T18:45:54.148020625Z   File "/opt/python/3.11.8/lib/python3.11/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
2024-08-23T18:45:54.148025225Z     self.wsgi = self.app.wsgi()
2024-08-23T18:45:54.148029225Z                 ^^^^^^^^^^^^^^^
2024-08-23T18:45:54.148033125Z   File "/opt/python/3.11.8/lib/python3.11/site-packages/gunicorn/app/base.py", line 67, in wsgi
2024-08-23T18:45:54.148037425Z     self.callable = self.load()
2024-08-23T18:45:54.148041425Z                     ^^^^^^^^^^^
2024-08-23T18:45:54.148045525Z   File "/opt/python/3.11.8/lib/python3.11/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
2024-08-23T18:45:54.148050025Z     return self.load_wsgiapp()
2024-08-23T18:45:54.148053625Z            ^^^^^^^^^^^^^^^^^^^
2024-08-23T18:45:54.148057325Z   File "/opt/python/3.11.8/lib/python3.11/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
2024-08-23T18:45:54.148061625Z     return util.import_app(self.app_uri)
2024-08-23T18:45:54.148065825Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-08-23T18:45:54.148069725Z   File "/opt/python/3.11.8/lib/python3.11/site-packages/gunicorn/util.py", line 371, in import_app
2024-08-23T18:45:54.148074025Z     mod = importlib.import_module(module)
2024-08-23T18:45:54.148078525Z           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-08-23T18:45:54.148082925Z   File "/opt/python/3.11.8/lib/python3.11/importlib/__init__.py", line 126, in import_module
2024-08-23T18:45:54.148087624Z     return _bootstrap._gcd_import(name[level:], package, level)
2024-08-23T18:45:54.148091824Z            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-08-23T18:45:54.148095824Z   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
2024-08-23T18:45:54.148100324Z   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
2024-08-23T18:45:54.148104524Z   File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
2024-08-23T18:45:54.148108724Z   File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
2024-08-23T18:45:54.148113024Z   File "<frozen importlib._bootstrap_external>", line 940, in exec_module
2024-08-23T18:45:54.148117224Z   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
2024-08-23T18:45:54.148121724Z   File "/tmp/8dcc3a371832e27/app.py", line 5, in <module>
2024-08-23T18:45:54.148126124Z     app = service.app.create_app()
2024-08-23T18:45:54.148130224Z           ^^^^^^^^^^^^^^^^^^^^^^^^
2024-08-23T18:45:54.148140624Z   File "/tmp/8dcc3a371832e27/service/app.py", line 68, in create_app
2024-08-23T18:45:54.148145424Z     <REDACTED>
2024-08-23T18:45:54.148149624Z                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-08-23T18:45:54.148154224Z   File "/tmp/8dcc3a371832e27/<REDACTED>", line 224, in __init__
2024-08-23T18:45:54.148158424Z     self.engine = create_engine(connection_string, echo=True)
2024-08-23T18:45:54.148162424Z                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-08-23T18:45:54.148166524Z   File "<string>", line 2, in create_engine
2024-08-23T18:45:54.148170824Z   File "/tmp/8dcc3a371832e27/antenv/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py", line 281, in warned
2024-08-23T18:45:54.148175524Z     return fn(*args, **kwargs)  # type: ignore[no-any-return]
2024-08-23T18:45:54.148179724Z            ^^^^^^^^^^^^^^^^^^^
2024-08-23T18:45:54.148183924Z   File "/tmp/8dcc3a371832e27/antenv/lib/python3.11/site-packages/sqlalchemy/engine/create.py", line 599, in create_engine
2024-08-23T18:45:54.148188324Z     dbapi = dbapi_meth(**dbapi_args)
2024-08-23T18:45:54.148192524Z             ^^^^^^^^^^^^^^^^^^^^^^^^
2024-08-23T18:45:54.148197024Z   File "/tmp/8dcc3a371832e27/antenv/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/psycopg2.py", line 690, in import_dbapi
2024-08-23T18:45:54.148201124Z     import psycopg2
2024-08-23T18:45:54.148205624Z ModuleNotFoundError: No module named 'psycopg2'
2024-08-23T18:45:54.148210724Z [2024-08-23 18:45:54 +0000] [75] [INFO] Worker exiting (pid: 75)
2024-08-23T18:45:54.148225624Z WARNING: unable to load api example [Errno 2] No such file or directory: <REDACTED>
2024-08-23T18:45:54.342125151Z [2024-08-23 18:45:54 +0000] [72] [ERROR] Worker (pid:75) exited with code 3
2024-08-23T18:45:54.342891250Z [2024-08-23 18:45:54 +0000] [72] [ERROR] Shutting down: Master
2024-08-23T18:45:54.342910050Z [2024-08-23 18:45:54 +0000] [72] [ERROR] Reason: Worker failed to boot.

Same problem here