pythonazure-webjobspython-venvpython-3.9extension-modules

How to pip install extension modules in Azure web jobs?


I'm trying to schedule a python script that uses an extension module in an Azure web job:

import sys

sitepackage = "D:\home\site\wwwroot\env\Lib\site-packages"
sys.path.append(sitepackage)

try:
    from bs4 import BeautifulSoup
    print("!!! BEAUTIFUL SOUP !!!")
except ImportError as e:
    print(e)

I have all the appropriate extension modules pip installed in my (venv) inside of my 'site-packages' folder: enter image description here

But it fails to run because it cannot import beautifulsoup4 from bs4:

error: "No module named bs4"

Solution

  • Okay, so I figured it out here's my solution and I'll explain each step in detail down below.

    1. Make sure you have an extension for python in your App service.
    2. Create and zip a folder for 3 items: your_file_name.py, run.bat, and requirements.txt
    3. Create a new Web Job with the new zipped folder

    STEP 1 - Make sure you have python site extension in your App Service:

    1. Navigate to your App Service in Azure
    2. Go to advance tools enter image description here
    3. Click on site extensions enter image description here
    4. Install the python extension that you'd like to use enter image description here

    STEP 2 - Create and zip a folder for 3 items: your_file_name.py, run.bat, and requirements.txt

        D:\home\python364x86\python.exe -m pip install --upgrade -r D:\home\site\wwwroot\App_Data\jobs\triggered\webjobname\zippedfoldername\requirements.txt
        D:\home\python364x86\python.exe your_file_name.py
    
    beautifulsoup4==4.9.3
    bs4==0.0.1
    soupsieve==2.2
    urlopen==1.0.0
    

    STEP 3 - Create a new Web Job with the new zipped folder enter image description here