Skip to content
This repository has been archived by the owner on Dec 21, 2019. It is now read-only.

A cookiecutter template for creating a standalone macOS project running Python code.

License

Notifications You must be signed in to change notification settings

beeware/Python-macOS-template

Repository files navigation

Python macOS Template

A template for building Python apps that will run under macOS.

This repository branch contains a template for Python 2.7. Other Python versions are available by cloning other branches of repository.

Using this template

The easiest way to use this project is to not use it at all - at least, not directly. Briefcase is a tool that uses this template, rolling it out using data extracted from your setup.py.

However, if you do want use this template directly...

  1. Install cookiecutter. This is a tool used to bootstrap complex project templates:

    $ pip install cookiecutter
    
  2. Run cookiecutter on the Python-macOS template:

    $ cookiecutter https://github.com/pybee/Python-macOS-template --checkout 2.7
    
  3. Download the Python Apple support package for macOS, and extract it. This will give you three frameworks.

    • BZip2.framework
    • OpenSSL.framework
    • Python.framework

    Alternatively, you can download the Python-Apple-support project, and build your own versions of these frameworks.

    These framework directories should be placed in the same directory as the app and app_packages directories generated by the cookiecutter project template - the Contents subdirectory of the main application bundle.

  4. Add your code to the template. At the very minimum, you need to have an app/<app name>/__main__.py file that defines an entry point that will start your application. If <app name> contains a dash, it will be converted to an underscore in the expected package name

    If your code has any dependencies, they should be installed under the app_packages directory.

If you've done this correctly, a project with a formal name of My Project, with an app name of `my-project should have a directory structure that looks something like:

My Project.app/
    Contents/
        MacOS/
            My Project
        Resources/
            app/
                my_project/
                    __init__.py
                    __main__.py
            app_packages/
                ...

The top level directory should identify as an macOS application, and can be distributed as a standalone package.

Next steps

Of course, just running Python code isn't very interesting by itself - you'll be able to output to the console, and see that output in XCode, but if you tap the app icon on your phone, you won't see anything - because there isn't a visible console on an iPhone.

To do something interesting, you'll need to work with the native macOS system libraries to draw widgets and respond to screen taps. The Rubicon Objective C bridging library can be used to enable an easy interface with the macOS system libraries. You could also use the toga library to provides a cross-platform widget toolkit that supports macOS.

If you have any external library dependencies (like toga, or anything other third-party library), you should install the library code into the app_packages directory. This directory is the same as a site_packages directory on a normal Python install.

About

A cookiecutter template for creating a standalone macOS project running Python code.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages