Konfigurera din lokala Python-utvecklingsmiljö för Azure

När utvecklare skapar molnprogram föredrar de vanligtvis att testa kod på sina lokala arbetsstationer innan de distribuerar koden till en molnmiljö som Azure. Lokal utveckling ger dig fördelen med hastighet och en bredare mängd olika felsökningsverktyg.

Den här artikeln innehåller installationsanvisningar för att skapa och validera en lokal utvecklingsmiljö som är lämplig för Python på Azure:

När du har konfigurerat din arbetsstation behöver du bara minimalt med extra konfiguration för att slutföra olika snabbstarter och självstudier någon annanstans i det här utvecklingscentret och i Azure-dokumentationen.

Den här konfigurationen för lokal utveckling är en separat fråga från etablering av resurser som utgör programmets molnmiljö i Azure. I utvecklingsprocessen kör du kod i din lokala utvecklingsmiljö som kan komma åt dessa molnresurser, men koden har ännu inte distribuerats till en lämplig värdtjänst i molnet. Det distributionssteget kommer senare, enligt beskrivningen i artikeln Om Azure-utvecklingsflödet.

Installera komponenter

Nödvändiga komponenter

Namn/installationsprogram Description
Azure-konto med en aktiv prenumeration Konton/prenumerationer är kostnadsfria och innehåller många tjänster som är kostnadsfria att använda.
Python 2.7+ eller 3.6+ Python-språkkörningen, som kan finnas i en Conda-miljö. Vi rekommenderar den senaste versionen av Python 3.x om du inte har särskilda versionskrav.
Kommandoradsgränssnitt för Azure (CLI) Innehåller en fullständig uppsättning CLI-kommandon för att etablera och hantera Azure-resurser. Python-utvecklare använder ofta Azure CLI tillsammans med anpassade Python-skript som använder Azure-hanteringsbiblioteken.

Obs!

  • Du installerar enskilda Azure-bibliotekspaket per projekt beroende på dina behov. Vi rekommenderar att du använder virtuella Python-miljöer för varje projekt. Det finns inget fristående installationsprogram för SDK för Python.
  • Även Azure PowerShell vanligtvis motsvarar Azure CLI, rekommenderar vi Azure CLI när du arbetar med Python.
Namn/installationsprogram Description
Visual Studio Code Även om du kan arbeta med alla lämpliga redigerare eller IDE är Microsofts kostnadsfria, lätta IDE mycket populärt bland Python-utvecklare. En introduktion finns i Python i VS Code.
Python-tillägg för VS Code Lägger till Python-stöd i VS Code.
Azure-tillägg för VS Code Lägger till stöd för en mängd olika Azure-tjänster i VS Code. Stöd för specifika tjänster kan också installeras individuellt.
git Kommandoradsverktyg för källkontroll. Du kan använda olika verktyg för källkontroll om du vill.

Tillvalskomponenter

Namn/installationsprogram Description
Docker-tillägg för VS Code Lägger till Docker-stöd i VS Code, vilket är användbart om du regelbundet arbetar med containrar.

Verifiera komponenter

  1. Öppna en terminal eller kommandotolk.
  2. Verifiera Python-versionen genom att köra kommandot python --version .
  3. Verifiera Azure CLI-versionen genom att köra az --version .
  4. Verifiera INSTALLATIONEN av VS Code:
    1. Kör code . för att öppna VS Code till den aktuella mappen.
    2. I VS Code väljer du kommandot Visa tillägg för att öppna tilläggsvyn. Kontrollera sedan att du ser "Python" och "Azure-konto" i listan (bland andra "Azure"-tillägg och "Docker" om du även har installerat tillägget).

Logga in på Azure från CLI

Logga in på din Azure-prenumeration i en terminal eller kommandotolk:

az login

Kommandot az är rotkommandot för Azure CLI. Följande är az ett eller flera specifika kommandon, till exempel login . Se kommandoreferensen az login.

Azure CLI upprätthåller vanligtvis din inloggning mellan sessioner, men det är en bra idé att köra när du öppnar en az login ny terminal eller kommandotolk.

Konfigurera autentisering

Enligt beskrivningen i Så här autentiserar du apparbehöver varje utvecklare ett huvudnamn för tjänsten som ska användas som programidentitet vid testning av appkod lokalt.

I följande avsnitt beskrivs hur du skapar ett huvudnamn för tjänsten och miljövariablerna som tillhandahåller egenskaperna för tjänstens huvudnamn till Azure-biblioteken när det behövs.

Varje utvecklare i din organisation bör utföra dessa steg individuellt.

Skapa ett huvudnamn för tjänsten och miljövariabler för utveckling

  1. Öppna en terminal eller kommandotolk där du har loggat in på Azure CLI ( az login ).

  2. Skapa tjänstens huvudnamn:

    az ad sp create-for-rbac --name localtest-sp-rbac
    

    Mer information om kommandot och dess argument finns i Vad kommandot create-for-rbac gör.

    Om du arbetar i en organisation kanske du inte har behörighet i prenumerationen för att köra det här kommandot. I så fall kontaktar du prenumerationsägarna för att be dem skapa tjänstens huvudnamn åt dig.

  3. Använd följande kommandon för att skapa miljövariabler som azure-biblioteken kräver. (Objektet DefaultAzureCredential i biblioteket azure-identity söker efter dessa variabler).

    set AZURE_SUBSCRIPTION_ID="aa11bb33-cc77-dd88-ee99-0918273645aa"
    set AZURE_TENANT_ID=00112233-7777-8888-9999-aabbccddeeff
    set AZURE_CLIENT_ID=12345678-1111-2222-3333-1234567890ab
    set AZURE_CLIENT_SECRET=oUBB11zz~JJJJ_~yyyyyyVVumumumumb_b
    

    Ersätt värdena som visas i de här kommandona med värdena för ditt specifika huvudnamn för tjänsten.

    Om du vill hämta ditt prenumerations-ID az account show kör du kommandot och letar efter egenskapen i id utdata.

    För enkelhetens skull skapar du en kommandoradsskriptfil (till exempel setenv.sh på macOS/Linux eller setenv.cmd på Windows) som innehåller samma kommandon. Du kan sedan köra skriptet för att ange variablerna när du öppnar en terminal eller kommandotolk för lokal testning. Lägg inte till skriptfilen i källkontrollen så att den bara finns kvar i ditt användarkonto.

  4. Skydda klient-ID och klienthemlighet (och filer som lagrar dem) så att de alltid finns kvar i ett visst användarkonto på en arbetsstation. Spara aldrig dessa egenskaper i källkontrollen eller dela dem med andra utvecklare. Om det behövs kan du ta bort tjänstens huvudnamn och skapa ett nytt.

    För ytterligare ett säkerhetslager kan du skapa en princip för att ta bort och återskapa tjänstens huvudnamn enligt ett regelbundet schema, vilket ogiltigförklarar tidigare-ID:er och hemligheter.

    Dessutom bör ett huvudnamn för utvecklingstjänsten helst endast godkännas för icke-produktionsresurser, eller skapas i en Azure-prenumeration som endast används i utvecklingssyfte. Produktionsprogrammet använder sedan en separat prenumeration och separata produktionsresurser som endast är auktoriserade för det distribuerade molnprogrammet.

  5. Om du vill ändra eller ta bort tjänstens huvudnamn senare kan du se Hantera tjänstens huvudnamn.

Viktigt

För produktionskod (i stället för lokal utveckling) ska du använda hanterade identiteter när det är möjligt i stället för ett specifikt huvudnamn för tjänsten.

Vad kommandot create-for-rbac gör

Kommandot az ad sp create-for-rbac skapar ett huvudnamn för tjänsten för rollbaserad autentisering (RBAC). (Mer information om tjänstens huvudnamn finns i Så här autentiserar och auktoriserar du Python-appar på Azure.)

  • adinnebär Azure Active Directory, betyder "tjänstens huvudnamn" och betyder "skapa för rollbaserad spcreate-for-rbac åtkomstkontroll", Azures primära form av auktorisering. Se kommandoreferensen az ad sp create-for-rbac.

  • Argumentet --name ska vara unikt inom din organisation och använder vanligtvis namnet på utvecklaren som använder tjänstens huvudnamn. Om du utelämnar det här argumentet använder Azure CLI ett allmänt namn på formuläret azure-cli-<timestamp> . Du kan byta namn på tjänstens huvudnamn på Azure Portal om du vill.

  • Kommandot az ad sp create-for-rbac tilldelar inte några roller till tjänstens huvudnamn. Detta innebär en risk om säkerhetsobjekt komprometteras, vilket är anledningen till att vi rekommenderar att du tilldelar de exakta rollerna i det exakta omfång som tjänstens huvudnamn kräver. Se Vad är rollbaserad åtkomstkontroll i Azure (RBAC) och Steg för att lägga till en rolltilldelning. Olika snabbstarter och självstudier innehåller också information om hur du auktoriserar ett huvudnamn för tjänsten för de specifika resurser som ingår.

  • Kommandot genererar JSON-utdata som liknar följande värden. Värdena appIdtenant , och kommer att password vara olika:

      { "appId": "12345678-1111-2222-3333-1234567890ab", "displayName": "localtest-sp-rbac", "name": " http://localtest-sp-rbac ", "password": "abcdef00-4444-5555-6666-1234567890ab", "tenant": "001122233-7777-8888-9999-aabbccddeeff" }

    I dessa utdata tenant är klientorganisations-ID, appId klient-ID och password är klienthemligheten.

    Varning

    Skydda alla autentiseringsuppgifter som ingår i az ad sp create-for-rbac utdata från , till exempel lösenord, klienthemlighet eller certifikat. Lagra inte autentiseringsuppgifter i kod eller filer som är indeade i källkontrollen.

    Viktigt

    Utdata från det här kommandot är den enda plats där du ser lösenordet. Du kan inte hämta lösenordet senare. Du kan dock lägga till ett nytt lösenord om det behövs utan att ogiltigförklara tjänstens huvudnamn eller befintliga lösenord.

Använda virtuella Python-miljöer

För varje projekt rekommenderar vi att du alltid skapar och aktiverar en virtuell miljö med följande steg:

  1. Öppna en terminal eller kommandotolk.

  2. Skapa en mapp för projektet.

  3. Skapa den virtuella miljön:

    # py -3 uses the global python interpreter. You can also use python -m venv .venv.
    py -3 -m venv .venv
    

    Det här kommandot kör venv Python-modulen och skapar en virtuell miljö i en mapp med namnet .venv .

  4. Aktivera den virtuella miljön:

    .venv\scripts\activate
    

En virtuell miljö är en mapp i ett projekt som isolerar en kopia av en specifik Python-tolk. När du aktiverar den miljön (vilket Visual Studio Code gör automatiskt) installeras ett bibliotek endast i den miljön när pip install du kör . När du sedan kör Din Python-kod körs den i miljöns exakta kontext med specifika versioner av varje bibliotek. Och när du kör pip freeze får du den exakta listan över dessa bibliotek. (I många av exemplen i den här dokumentationen skapar du enrequirements.txt för de bibliotek du behöver och använder sedan . En kravfil behövs vanligtvis när du distribuerar kod till Azure.)

Om du inte använder en virtuell miljö körs Python i den globala miljön. Även om det är snabbt och praktiskt att använda den globala miljön, tenderar det att bli fler och fler med alla bibliotek som du installerar för alla projekt eller experiment. Om du uppdaterar ett bibliotek för ett projekt kan du dessutom bryta andra projekt som är beroende av olika versioner av biblioteket. Och eftersom miljön delas av val annat antal projekt kan du inte använda för att hämta en lista över ett pip freeze projekts beroenden.

I den globala miljön vill du installera verktygspaket som du vill använda i flera projekt. Du kan till exempel köra pip install gunicorn i den globala miljön för att göra gunicorn-webbservern tillgänglig överallt.

Använda källkontroll

Vi rekommenderar att du börjar skapa en lagringsplats för källkontroll varje gång du startar ett projekt. Om du har Installerat Git kör du bara följande kommando:

git init

Därifrån kan du köra kommandon som git add och för att genomföra git commit ändringar. Genom att regelbundet genomföra ändringar skapar du en historik för genomförande som du kan använda för att återgå till ett tidigare tillstånd.

Om du vill göra en säkerhetskopiering av projektet online rekommenderar vi också att du laddar upp lagringsplatsen till GitHub eller Azure DevOps. Om du först har initierat en lokal lagringsplats använder du för att koppla den lokala git remote add lagringsplatsen till GitHub eller Azure DevOps.

Dokumentation för git finns på git-scm.com/docs och på internet.

Visual Studio Code innehåller ett antal inbyggda git-funktioner. Mer information finns i Använda versionskontroll i VS Code.

Du kan också använda val annat verktyg för källkontroll. Git är helt enkelt en av de mest använda och stöds.

Nästa steg

Ta en snabb titt på de vanliga användningsmönstren för Azure-biblioteken med din lokala utvecklingsmiljö: