setup-python
setup-python copied to clipboard
Unable to use asdf-vm based version-file
I was using setup-node action, and didn't face this problem when using .tool-versions file; so i was surprised hitting this error in setup-python action.
Description:
When using the action, I expected it to work seamlessly with .tool-versions file that asdf-vm generates.
Action version:
Using @v4
Platform:
- [x] Ubuntu
Runner type:
- Github's runner
Tools version:
Repro steps:
-
Create a asdf based version file:
asdf local python 3.10.9 asdf local poetry 1.3.1 -
Use the generated
.tool-versionsfile in github action:- uses: actions/setup-python@v4 with: python-version-file: .tool-versions cache: poetry -
Fails to install python.
Expected behavior:
Parser should be smart to also identify other version managers
Actual behavior:
Resolved architecture/.tool-versions as python 3.10.9
poetry 1.3.1
Version python 3.10.[9](https://github.com/XXXXXXXXXXXXXXXX/actions/runs/3738XXXXXX/jobs/63453738XXXXXX#step:4:10)
poetry 1.3.1
was not found in the local cache
Error: The version 'python 3.[10](https://github.com/XXXXXXXXXXXXXXXX/actions/runs/3738XXXXXX/jobs/63453738XXXXXX#step:4:11).9
poetry 1.3.1
' with architecture 'x64' was not found for Ubuntu 22.04.
Hello @hjpotter92 ! Thank you for reporting this!
We'll consider updating the parsing logic for the python-version-file input.
As a workaround you can add a small intermediate step:
- name: Determine versions
shell: bash -leo pipefail {0}
id: get_versions
run: |
python="$(grep -v '#' .tool-versions | grep python | awk '{print $2}')"
echo "python=${python}" >> $GITHUB_OUTPUT
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: ${{ steps.get_versions.outputs.python }}
You can even parse the Python version in a single step:
python_version="$(grep --perl-regexp --only-matching '(?<=python )(\d+\.){2}\d+' .tool-versions)"