diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c7cea8e9120..3a343b6001d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -41,8 +41,7 @@ jobs: - name: Install poetry shell: bash run: | - curl -fsS -o get-poetry.py https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py - python get-poetry.py --preview -y + python get-poetry.py -y echo "::set-env name=PATH::$HOME/.poetry/bin:$PATH" - name: Configure poetry diff --git a/README.md b/README.md index 4d1a0a68f6a..44145cba57c 100644 --- a/README.md +++ b/README.md @@ -23,13 +23,6 @@ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poet Alternatively, you can download the `get-poetry.py` file and execute it separately. -The setup script must be able to find one of following executables in your shell's path environment: - -- `python` (which can be a py3 or py2 interpreter) -- `python3` -- `py.exe -3` (Windows) -- `py.exe -2` (Windows) - If you want to install prerelease versions, you can do so by passing `--preview` to `get-poetry.py`: ```bash diff --git a/get-poetry.py b/get-poetry.py index c691b2e363d..b8085ca3c7c 100644 --- a/get-poetry.py +++ b/get-poetry.py @@ -197,7 +197,8 @@ def expanduser(path): POETRY_LIB_BACKUP = os.path.join(POETRY_HOME, "lib-backup") -BIN = """# -*- coding: utf-8 -*- +BIN = """#!/usr/bin/env python +# -*- coding: utf-8 -*- import glob import sys import os @@ -216,7 +217,7 @@ def expanduser(path): main() """ -BAT = u('@echo off\r\n{python_executable} "{poetry_bin}" %*\r\n') +BAT = u('@echo off\r\npython "{poetry_bin}" %*\r\n') PRE_MESSAGE = """# Welcome to {poetry}! @@ -588,61 +589,23 @@ def _make_lib(self, version): finally: gz.close() - def _which_python(self): - """Decides which python executable we'll embed in the launcher script.""" - allowed_executables = ["python", "python3"] - if WINDOWS: - allowed_executables += ["py.exe -3", "py.exe -2"] - - # \d in regex ensures we can convert to int later - version_matcher = re.compile(r"^Python (?P\d+)\.(?P\d+)\..+$") - fallback = None - for executable in allowed_executables: - try: - raw_version = subprocess.check_output( - executable + " --version", stderr=subprocess.STDOUT, shell=True - ).decode("utf-8") - except subprocess.CalledProcessError: - continue - - match = version_matcher.match(raw_version.strip()) - if match and tuple(map(int, match.groups())) >= (3, 0): - # favor the first py3 executable we can find. - return executable - if fallback is None: - # keep this one as the fallback; it was the first valid executable we found. - fallback = executable - - if fallback is None: - raise RuntimeError( - "No python executable found in shell environment. Tried: " - + str(allowed_executables) - ) - - return fallback - def make_bin(self): if not os.path.exists(POETRY_BIN): os.mkdir(POETRY_BIN, 0o755) - python_executable = self._which_python() - if WINDOWS: with open(os.path.join(POETRY_BIN, "poetry.bat"), "w") as f: f.write( u( BAT.format( - python_executable=python_executable, poetry_bin=os.path.join(POETRY_BIN, "poetry").replace( os.environ["USERPROFILE"], "%USERPROFILE%" - ), + ) ) ) ) with open(os.path.join(POETRY_BIN, "poetry"), "w", encoding="utf-8") as f: - if not WINDOWS: - f.write(u("#!/usr/bin/env {}\n".format(python_executable))) f.write(u(BIN)) if not WINDOWS: