Launching Python App On Mac Locally

May 24, 2016  Or, to run locally with runserver, set DATABASEURL and REDISURL in your environ, then run python manage.py runserver. Or, to run locally with multiple proceses by setting the environ, then running the two commands (daphne and runworker) as shown in the Procfile. Running with Docker. Tomas Tomecek put together a Dockerized version of this app. Debugging - Learn to debug Python both locally and remotely. Testing - Configure test environments and discover, run, and debug tests. Settings reference - Explore the full range of Python-related settings in VS Code. Deploy Python to Azure App Service using containers; Deploy Python to Azure App. Only the Mac app and source code packages were rereleased as 4.0.1, not the Windows or Linux executables. The source-code package was updated to include the app fix as an example for developers (see '4.0.1'), but the fix is irrelevant to both source code and other platforms. Users of the 4.0 Mac app are encouraged to upgrade to this new release. Python code files can be created with any plain text editor. If you are new to Python programming, you can try Sublime Text, which is a powerful and easy-to-use editor, but you can use any editor you like. To keep moving forward in this tutorial, you’ll need to create a test script. Open your favorite text editor and write the following code. It also provides many convenient commands for launching Python and its tools. But where a large number of installations are going to be performed it is very useful to have a locally cached copy. Ensure you have the latest Windows 10 updates and search the Microsoft Store app for “Python 3.8”. Ensure that the app you select is.

  1. Launching Python App On Mac Locally Mac
  2. Launching Python App On Mac Locally Download
-->

Azure Functions Core Tools lets you develop and test your functions on your local computer from the command prompt or terminal. Your local functions can connect to live Azure services, and you can debug your functions on your local computer using the full Functions runtime. You can even deploy a function app to your Azure subscription.

Important

Do not mix local development with portal development in the same function app. When you create and publish functions from a local project, you should not try to maintain or modify project code in the portal.

Developing functions on your local computer and publishing them to Azure using Core Tools follows these basic steps:

Core Tools versions

There are three versions of Azure Functions Core Tools. The version you use depends on your local development environment, choice of language, and level of support required:

  • Version 1.x: Supports version 1.x of the Azure Functions runtime. This version of the tools is only supported on Windows computers and is installed from an npm package.

  • Version 3.x/2.x: Supports either version 3.x or 2.x of the Azure Functions runtime. These versions support Windows, macOS, and Linux and use platform-specific package managers or npm for installation.

Unless otherwise noted, the examples in this article are for version 3.x.

Install the Azure Functions Core Tools

Azure Functions Core Tools includes a version of the same runtime that powers Azure Functions runtime that you can run on your local development computer. It also provides commands to create functions, connect to Azure, and deploy function projects.

Important

You must have the Azure CLI installed locally to be able to publish to Azure from Azure Functions Core Tools.

Version 3.x and 2.x

Version 3.x/2.x of the tools uses the Azure Functions runtime that is built on .NET Core. This version is supported on all platforms .NET Core supports, including Windows, macOS, and Linux.

Important

You can bypass the requirement for installing the .NET Core SDK by using extension bundles.

The following steps use npm to install Core Tools on Windows. You can also use Chocolatey. For more information, see the Core Tools readme.

  1. Install Node.js, which includes npm.

    • For version 3.x of the tools, only Node.js 10 and later versions are supported.
    • For version 2.x of the tools, only Node.js 8.5 and later versions are supported.
  2. Install the Core Tools package:

    v3.x (recommended)
    v2.x

    It may take a few minutes for npm to download and install the Core Tools package.

  3. If you don't plan to use extension bundles, install the .NET Core 3.x SDK for Windows.

The following steps use Homebrew to install the Core Tools on macOS.

  1. Install Homebrew, if it's not already installed.

  2. Install the Core Tools package:

    v3.x (recommended)
    v2.x
  3. If you don't plan to use extension bundles, install the .NET Core 3.x SDK for macOS.

The following steps use APT to install Core Tools on your Ubuntu/Debian Linux distribution. For other Linux distributions, see the Core Tools readme.

  1. Install the Microsoft package repository GPG key, to validate package integrity:

  2. Set up the APT source list before doing an APT update.

    Ubuntu
    Debian
  3. Check the /etc/apt/sources.list.d/dotnetdev.list file for one of the appropriate Linux version strings listed below:

    Linux distributionVersion
    Debian 10buster
    Debian 9stretch
    Ubuntu 20.04focal
    Ubuntu 19.04disco
    Ubuntu 18.10cosmic
    Ubuntu 18.04bionic
    Ubuntu 17.04zesty
    Ubuntu 16.04/Linux Mint 18xenial
  4. Start the APT source update:

  5. Install the Core Tools package:

    If you’re running Lion (10.7) or Mountain Lion (10.8), you will need to upgrade to El Capitan (10.11) first. Mac software update stuck installing 2018 toyota.

    v3.x (recommended)
    v2.x
  6. If you don't plan to use extension bundles, install .NET Core 3.x SDK for Linux.

Create a local Functions project

A functions project directory contains the files host.json and local.settings.json, along with subfolders that contain the code for individual functions. This directory is the equivalent of a function app in Azure. To learn more about the Functions folder structure, see the Azure Functions developers guide.

Version 3.x/2.x requires you to select a default language for your project when it is initialized. In version 3.x/2.x, all functions added use default language templates. In version 1.x, you specify the language each time you create a function.

In the terminal window or from a command prompt, run the following command to create the project and local Git repository:

When you provide a project name, a new folder with that name is created and initialized. Otherwise, the current folder is initialized.
In version 3.x/2.x, when you run the command you must choose a runtime for your project.

Use the up/down arrow keys to choose a language, then press Enter. If you plan to develop JavaScript or TypeScript functions, choose node, and then select the language. TypeScript has some additional requirements.

Financial statements and reports can be exported in different formats, including CSVs, Microsoft Excel files, and PDFs, for use across departments.Nonprofit accounting software tracks donations and pledges from donors and fundraising campaigns. Best donar for non profit software mac compatible download.

The output looks like the following example for a JavaScript project:

func init supports the following options, which are version 3.x/2.x-only, unless otherwise noted:

OptionDescription
--csxCreates .NET functions as C# script, which is the version 1.x behavior. Valid only with --worker-runtime dotnet.
--dockerCreates a Dockerfile for a container using a base image that is based on the chosen --worker-runtime. Use this option when you plan to publish to a custom Linux container.
--docker-onlyAdds a Dockerfile to an existing project. Prompts for the worker-runtime if not specified or set in local.settings.json. Use this option when you plan to publish an existing project to a custom Linux container.
--forceInitialize the project even when there are existing files in the project. This setting overwrites existing files with the same name. Other files in the project folder aren't affected.
--languageInitializes a language specific project. Currently supported when --worker-runtime set to node. Options are typescript and javascript. You can also use --worker-runtime javascript or --worker-runtime typescript.
--managed-dependenciesInstalls managed dependencies. Currently, only the PowerShell worker runtime supports this functionality.
--source-controlControls whether a git repository is created. By default, a repository isn't created. When true, a repository is created.
--worker-runtimeSets the language runtime for the project. Supported values are: csharp, dotnet, javascript,node (JavaScript), powershell, python, and typescript. For Java, use Maven.When not set, you're prompted to choose your runtime during initialization.

Important

By default, version 2.x and later versions of the Core Tools create function app projects for the .NET runtime as C# class projects (.csproj). These C# projects, which can be used with Visual Studio or Visual Studio Code, are compiled during testing and when publishing to Azure. If you instead want to create and work with the same C# script (.csx) files created in version 1.x and in the portal, you must include the --csx parameter when you create and deploy functions.

Register extensions

With the exception of HTTP and timer triggers, Functions bindings in runtime version 2.x and higher are implemented as extension packages. In version 2.x and beyond of the Azure Functions runtime, you have to explicitly register the extensions for the binding types used in your functions. The exceptions to this are HTTP bindings and timer triggers, which do not require extensions.

You can choose to install binding extensions individually, or you can add an extension bundle reference to the host.json project file. Extension bundles removes the chance of having package compatibility issues when using multiple binding types. It is the recommended approach for registering binding extensions. Extension bundles also removes the requirement of installing the .NET Core 2.x SDK.

Extension bundles

The easiest way to install binding extensions is to enable extension bundles. When you enable bundles, a predefined set of extension packages is automatically installed.

To enable extension bundles, open the host.json file and update its contents to match the following code:

To learn more, see Register Azure Functions binding extensions. You should add extension bundles to the host.json before you add bindings to the function.json file.

Register individual extensions

If you need to install extensions that aren't in a bundle, you can manually register individual extension packages for specific bindings.

Note

To manually register extensions by using func extensions install, you must have the .NET Core 2.x SDK installed.

After you have updated your function.json file to include all the bindings that your function needs, run the following command in the project folder.

The command reads the function.json file to see which packages you need, installs them, and rebuilds the extensions project. It adds any new bindings at the current version but does not update existing bindings. Use the --force option to update existing bindings to the latest version when installing new ones.

Mac

Local settings file

The local.settings.json file stores app settings, connection strings, and settings used by local development tools. Settings in the local.settings.json file are used only when you're running projects locally. The local settings file has this structure:

These settings are supported when you run projects locally:

SettingDescription
IsEncryptedWhen this setting is set to true, all values are encrypted with a local machine key. Used with func settings commands. Default value is false.
ValuesArray of application settings and connection strings used when a project is running locally. These key-value (string-string) pairs correspond to application settings in your function app in Azure, like AzureWebJobsStorage. Many triggers and bindings have a property that refers to a connection string app setting, like Connection for the Blob storage trigger. For these properties, you need an application setting defined in the Values array.
AzureWebJobsStorage is a required app setting for triggers other than HTTP.
Version 2.x and higher of the Functions runtime requires the [FUNCTIONS_WORKER_RUNTIME] setting, which is generated for your project by Core Tools.
When you have the Azure storage emulator installed locally and you set AzureWebJobsStorage to UseDevelopmentStorage=true, Core Tools uses the emulator. The emulator is useful during development, but you should test with an actual storage connection before deployment.
Values must be strings and not JSON objects or arrays. Setting names can't include a colon (:) or a double underline (__). These characters are reserved by the runtime.
HostSettings in this section customize the Functions host process when you run projects locally. These settings are separate from the host.json settings, which also apply when you run projects in Azure.
LocalHttpPortSets the default port used when running the local Functions host (func host start and func run). The --port command-line option takes precedence over this setting.
CORSDefines the origins allowed for cross-origin resource sharing (CORS). Origins are supplied as a comma-separated list with no spaces. The wildcard value (*) is supported, which allows requests from any origin.
CORSCredentialsWhen set to true, allows withCredentials requests.
ConnectionStringsA collection. Don't use this collection for the connection strings used by your function bindings. This collection is used only by frameworks that typically get connection strings from the ConnectionStrings section of a configuration file, like Entity Framework. Connection strings in this object are added to the environment with the provider type of System.Data.SqlClient. Items in this collection aren't published to Azure with other app settings. You must explicitly add these values to the Connection strings collection of your function app settings. If you're creating a SqlConnection in your function code, you should store the connection string value with your other connections in Application Settings in the portal.

By default, these settings are not migrated automatically when the project is published to Azure. Use the --publish-local-settings switch when you publish to make sure these settings are added to the function app in Azure. Note that values in ConnectionStrings are never published.

The function app settings values can also be read in your code as environment variables. For more information, see the Environment variables section of these language-specific reference topics:

When no valid storage connection string is set for AzureWebJobsStorage and the emulator isn't being used, the following error message is shown:

Missing value for AzureWebJobsStorage in local.settings.json. This is required for all triggers other than HTTP. You can run 'func azure functionapp fetch-app-settings <functionAppName>' or specify a connection string in local.settings.json.

Get your storage connection strings

Even when using the Microsoft Azure Storage Emulator for development, you may want to test with an actual storage connection. Assuming you have already created a storage account, you can get a valid storage connection string in one of the following ways:

  • From the Azure portal, search for and select Storage accounts.

    Select your storage account, select Access keys in Settings, then copy one of the Connection string values.

  • Use Azure Storage Explorer to connect to your Azure account. In the Explorer, expand your subscription, expand Storage Accounts, select your storage account, and copy the primary or secondary connection string.

  • Use Core Tools to download the connection string from Azure with one of the following commands:

    • Download all settings from an existing function app:

    • Get the Connection string for a specific storage account:

      When you aren't already signed in to Azure, you're prompted to do so.

Create a function

To create a function, run the following command:

In version 3.x/2.x, when you run func new you are prompted to choose a template in the default language of your function app, then you are also prompted to choose a name for your function. In version 1.x, you are also prompted to choose the language.

Function code is generated in a subfolder with the provided function name, as you can see in the following queue trigger output:

Launching

You can also specify these options in the command using the following arguments:

ArgumentDescription
--csx(Version 2.x and later versions.) Generates the same C# script (.csx) templates used in version 1.x and in the portal.
--language, -lThe template programming language, such as C#, F#, or JavaScript. This option is required in version 1.x. In version 2.x and later versions, do not use this option or choose a language that matches the worker runtime.
--name, -nThe function name.
--template, -tUse the func templates list command to see the complete list of available templates for each supported language.

For example, to create a JavaScript HTTP trigger in a single command, run:

To create a queue-triggered function in a single command, run:

Run functions locally

To run a Functions project, run the Functions host. The host enables triggers for all functions in the project. The start command varies, depending on your project language.

This command must be run in a virtual environment.

Note

Version 1.x of the Functions runtime requires the host command, as in the following example:

func start supports the following options:

OptionDescription
--no-buildDo no build current project before running. For dotnet projects only. Default is set to false. Not supported for version 1.x.
--cors-credentialsAllow cross-origin authenticated requests (i.e. cookies and the Authentication header) Not supported for version 1.x.
--corsA comma-separated list of CORS origins, with no spaces.
--language-workerArguments to configure the language worker. For example, you may enable debugging for language worker by providing debug port and other required arguments. Not supported for version 1.x.
--certThe path to a .pfx file that contains a private key. Only used with --useHttps. Not supported for version 1.x.
--passwordEither the password or a file that contains the password for a .pfx file. Only used with --cert. Not supported for version 1.x.
--port, -pThe local port to listen on. Default value: 7071.
--pause-on-errorPause for additional input before exiting the process. Used only when launching Core Tools from an integrated development environment (IDE).
--script-root, --prefixUsed to specify the path to the root of the function app that is to be run or deployed. This is used for compiled projects that generate project files into a subfolder. For example, when you build a C# class library project, the host.json, local.settings.json, and function.json files are generated in a root subfolder with a path like MyProject/bin/Debug/netstandard2.0. In this case, set the prefix as --script-root MyProject/bin/Debug/netstandard2.0. This is the root of the function app when running in Azure.
--timeout, -tThe timeout for the Functions host to start, in seconds. Default: 20 seconds.
--useHttpsBind to https://localhost:{port} rather than to http://localhost:{port}. By default, this option creates a trusted certificate on your computer.

When the Functions host starts, it outputs the URL of HTTP-triggered functions:

Important

When running locally, authorization isn't enforced for HTTP endpoints. This means that all local HTTP requests are handled as authLevel = 'anonymous'. For more information, see the HTTP binding article.

Passing test data to a function

To test your functions locally, you start the Functions host and call endpoints on the local server using HTTP requests. The endpoint you call depends on the type of function.

Note

Examples in this topic use the cURL tool to send HTTP requests from the terminal or a command prompt. You can use a tool of your choice to send HTTP requests to the local server. The cURL tool is available by default on Linux-based systems and Windows 10 build 17063 and later. On older Windows, you must first download and install the cURL tool.

For more general information on testing functions, see Strategies for testing your code in Azure Functions.

HTTP and webhook triggered functions

You call the following endpoint to locally run HTTP and webhook triggered functions:

Make sure to use the same server name and port that the Functions host is listening on. You see this in the output generated when starting the Function host. You can call this URL using any HTTP method supported by the trigger.

The following cURL command triggers the MyHttpTrigger quickstart function from a GET request with the name parameter passed in the query string.

The following example is the same function called from a POST request passing name in the request body:

You can make GET requests from a browser passing data in the query string. For all other HTTP methods, you must use cURL, Fiddler, Postman, or a similar HTTP testing tool.

Non-HTTP triggered functions

For all kinds of functions other than HTTP triggers and webhooks and Event Grid triggers, you can test your functions locally by calling an administration endpoint. Calling this endpoint with an HTTP POST request on the local server triggers the function.

To test Event Grid triggered functions locally, see Local testing with viewer web app.

You can optionally pass test data to the execution in the body of the POST request. This functionality is similar to the Test tab in the Azure portal.

You call the following administrator endpoint to trigger non-HTTP functions:

To pass test data to the administrator endpoint of a function, you must supply the data in the body of a POST request message. The message body is required to have the following JSON format:

The <trigger_input> value contains data in a format expected by the function. The following cURL example is a POST to a QueueTriggerJS function. In this case, the input is a string that is equivalent to the message expected to be found in the queue.

Using the func run command (version 1.x only)

Important

The func run command is only supported in version 1.x of the tools. For more information, see the topic How to target Azure Functions runtime versions.

In version 1.x, you can also invoke a function directly by using func run <FunctionName> and provide input data for the function. This command is similar to running a function using the Test tab in the Azure portal.

func run supports the following options:

OptionDescription
--content, -cInline content.
--debug, -dAttach a debugger to the host process before running the function.
--timeout, -tTime to wait (in seconds) until the local Functions host is ready.
--file, -fThe file name to use as content.
--no-interactiveDoes not prompt for input. Useful for automation scenarios.

For example, to call an HTTP-triggered function and pass content body, run the following command:

Publish to Azure

The Azure Functions Core Tools supports two types of deployment: deploying function project files directly to your function app via Zip Deploy and deploying a custom Docker container. You must have already created a function app in your Azure subscription, to which you'll deploy your code. Projects that require compilation should be built so that the binaries can be deployed.

Important

You must have the Azure CLI installed locally to be able to publish to Azure from Core Tools.

A project folder may contain language-specific files and directories that shouldn't be published. Excluded items are listed in a .funcignore file in the root project folder.

Deploy project files

To publish your local code to a function app in Azure, use the publish command:

This command publishes to an existing function app in Azure. You'll get an error if you try to publish to a <FunctionAppName> that doesn't exist in your subscription. To learn how to create a function app from the command prompt or terminal window using the Azure CLI, see Create a Function App for serverless execution. By default, this command uses remote build and deploys your app to run from the deployment package. To disable this recommended deployment mode, use the --nozip option.

Important

When you create a function app in the Azure portal, it uses version 3.x of the Function runtime by default. To make the function app use version 1.x of the runtime, follow the instructions in Run on version 1.x.You can't change the runtime version for a function app that has existing functions.

The following publish options apply for all versions:

OptionDescription
--publish-local-settings -iPublish settings in local.settings.json to Azure, prompting to overwrite if the setting already exists. If you are using the Microsoft Azure Storage Emulator, first change the app setting to an actual storage connection.
--overwrite-settings -ySuppress the prompt to overwrite app settings when --publish-local-settings -i is used.

The following publish options are supported only for version 2.x and later versions:

OptionDescription
--publish-settings-only, -oOnly publish settings and skip the content. Default is prompt.
--list-ignored-filesDisplays a list of files that are ignored during publishing, which is based on the .funcignore file.
--list-included-filesDisplays a list of files that are published, which is based on the .funcignore file.
--nozipTurns the default Run-From-Package mode off.
--build-native-depsSkips generating .wheels folder when publishing Python function apps.
--build, -bPerforms build action when deploying to a Linux function app. Accepts: remote and local.
--additional-packagesList of packages to install when building native dependencies. For example: python3-dev libevent-dev.
--forceIgnore pre-publishing verification in certain scenarios.
--csxPublish a C# script (.csx) project.
--no-buildProject isn't built during publishing. For Python, pip install isn't performed.
--dotnet-cli-paramsWhen publishing compiled C# (.csproj) functions, the core tools calls 'dotnet build --output bin/publish'. Any parameters passed to this will be appended to the command line.

Deploy custom container

Azure Functions lets you deploy your function project in a custom Docker container. For more information, see Create a function on Linux using a custom image. Custom containers must have a Dockerfile. To create an app with a Dockerfile, use the --dockerfile option on func init.

The following custom container deployment options are available:

OptionDescription
--registryThe name of a Docker Registry the current user signed-in to.
--platformHosting platform for the function app. Valid options are kubernetes
--nameFunction app name.
--maxOptionally, sets the maximum number of function app instances to deploy to.
--minOptionally, sets the minimum number of function app instances to deploy to.
--configSets an optional deployment configuration file.

Monitoring functions

The recommended way to monitor the execution of your functions is by integrating with Azure Application Insights. You can also stream execution logs to your local computer. To learn more, see Monitor Azure Functions.

Application Insights integration

Application Insights integration should be enabled when you create your function app in Azure. If for some reason your function app isn't connected to an Application Insights instance, it's easy to do this integration in the Azure portal.

Azure Functions makes it easy to add Application Insights integration to a function app from the Azure portal.

  1. In the Azure portal, search for and select function app, and then choose your function app.

  2. Select the Application Insights is not configured banner at the top of the window. If you don't see this banner, then your app might already have Application Insights enabled.

  3. Expand Change your resource and create an Application Insights resource by using the settings specified in the following table.

    SettingSuggested valueDescription
    New resource nameUnique app nameIt's easiest to use the same name as your function app, which must be unique in your subscription.
    LocationWest EuropeIf possible, use the same region as your function app, or one that's close to that region.
  4. Select Apply.

    The Application Insights resource is created in the same resource group and subscription as your function app. After the resource is created, close the Application Insights window.

  5. In your function app, select Configuration under Settings, and then select Application settings. If you see a setting named APPINSIGHTS_INSTRUMENTATIONKEY, Application Insights integration is enabled for your function app running in Azure.

Enable streaming logs

You can view a stream of log files being generated by your functions in a command-line session on your local computer.

Launching Python App On Mac Locally Mac

Native streaming logs

Built-in log streaming

Use the logstream option to start receiving streaming logs of a specific function app running in Azure, as in the following example:

Live Metrics Stream

You can also view the Live Metrics Stream for your function app in a new browser window by including the --browser option, as in the following example:

This type of streaming logs requires that Application Insights integration be enabled for your function app.

Next steps

Launching Python App On Mac Locally Download

Learn how to develop, test, and publish Azure Functions by using Azure Functions Core Tools Microsoft learn moduleAzure Functions Core Tools is open source and hosted on GitHub.
To file a bug or feature request, open a GitHub issue.