| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
This action sets up a Python environment for use in actions by:
See action.yml
Basic:
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: '3.x' # Version range or exact version of a Python version to use, using SemVer's version range syntax
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
- run: python my_script.pyMatrix Testing:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ '2.x', '3.x', 'pypy2', 'pypy3' ]
name: Python ${{ matrix.python-version }} sample
steps:
- uses: actions/checkout@v2
- name: Setup python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
architecture: x64
- run: python my_script.pyExclude a specific Python version:
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: [2.7, 3.6, 3.7, 3.8, pypy2, pypy3]
exclude:
- os: macos-latest
python-version: 3.8
- os: windows-latest
python-version: 3.6
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Display Python version
run: python -c "import sys; print(sys.version)"Download and set up a version of Python that does not come preinstalled on an image:
jobs:
build:
runs-on: ubuntu-latest
strategy:
# in this example, there is a newer version already installed, 3.7.7, so the older version will be downloaded
python-version: [3.5, 3.6, 3.7.4, 3.8]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- run: python my_script.py
Check out our detailed guide on using Python with GitHub Actions.
setup-python is able to configure Python from two sources:
GitHub hosted runners have a tools cache that comes with a few versions of Python + PyPy already installed. This tools cache helps speed up runs and tool setup by not requiring any new downloads. There is an environment variable called RUNNER_TOOL_CACHE on each runner that describes the location of this tools cache and there is where you will find Python and PyPy installed. setup-python works by taking a specific version of Python or PyPy in this tools cache and adding it to PATH.
| Location | |
|---|---|
| Tool Cache Directory | RUNNER_TOOL_CACHE |
| Python Tool Cache | RUNNER_TOOL_CACHE/Python/* |
| PyPy Tool Cache | RUNNER_TOOL_CACHE/PyPy/* |
GitHub virtual environments are setup in actions/virtual-environments. During the setup, the available versions of Python and PyPy are automatically downloaded, setup and documented.
If there is a specific version of Python that you need and you don't want to worry about any potential breaking changes due to patch updates (going from 3.7.5 to 3.7.6 for example), you should specify the exact major, minor, and patch version (such as 3.7.5)
You should specify only a major and minor version if you are okay with the most recent patch version being used.
If you would like to use setup-python and a self-hosted runner, there isn't much that you need to do. When setup-python is run for the first time with a version of Python that it doesn't have, it will download the appropriate version, and set up the tools cache on your machine. Any subsequent runs will use the Python versions that were previously downloaded.
A few things to look out for when setup-python is first setting up the tools cache
setup-python helps keep your dependencies explicit and ensures consistent behavior between different runners. If you use python in a shell on a GitHub hosted runner without setup-python it will default to whatever is in PATH. The default version of Python in PATH vary between runners and can change unexpectedly so we recommend you always use setup-python.
The scripts and documentation in this project are released under the MIT License
Contributions are welcome! See our Contributor's Guide
| Back | FazBrowse Home | New Git URL |