python-poetry / install.python-poetry.org

The official Poetry installation script
https://install.python-poetry.org
201 stars 52 forks source link

Allow to set METADATA_URL in an environment variable #144

Open arnauddeblic opened 1 month ago

arnauddeblic commented 1 month ago

Hello, I need to install poetry on a server that is not connected to internet. When executing the installation script previsously copied on the server, I encounter a problem when the script attempts to retrieve metadata. This seems to be due to this line in the script : METADATA_URL = "https://pypi.org/pypi/poetry/json". Would it be possible to allow to set this parameter via an environment variable, e.g. POETRY_METADATA_URL ? In advance, many thanks Kind regards Arnaud

dimbleby commented 1 month ago

I need to install poetry on a server that is not connected to internet.

and what is the rest of your plan? how do you expect to download poetry?

arnauddeblic commented 1 month ago

Many thanks @dimbleby for your very quick answer I realize I was not very clear ! To be more precise, my server has no direct access to internet, but is behind a "Sonatype Nexus Repository Manager" proxy. I already configured pip with pip config --global set global.index-url <my-sonartype-nexus-pypi-repository-url> With such an environment variable, I could either set a nexus-type url for https://pypi.org/pypi/poetry/json, or set a local path like "file:///D:/Python/_install/metadata.json"

dimbleby commented 1 month ago

if you have a usable repository you probably are better off just using one of the other installation methods eg pipx, or manually create a venv and pip install poetry directly

arnauddeblic commented 1 month ago

I tryed both alternative methods, and my feeling was :

In addition, if i configure my nexus proxy so that it can serve the installation script beyond the firewall, I no longer need to previsously copy the the installation script on the server.

I felt that using the official installer would be more straigtforward, I guess such a command would do the job :

New-Item -Path Env:\POETRY_HOME -Value 'D:/Python/poetry'
New-Item -Path Env:\POETRY_METADATA_URL -Value '<my-sonartype-nexus-pypi-poetry-json-url>'
(Invoke-WebRequest -Uri <my-sonartype-nexus-install-python-poetry-url> -UseBasicParsing).Content | py -
dimbleby commented 1 month ago

I doubt nexus even offers the json API

arnauddeblic commented 1 month ago

Within "Sonatype Nexus Repository Manager", i can set any URL as a proxy, not necessarily a repository URL I could set https://pypi.org/pypi/poetry/json as a proxied-url, allowing me to reach the json content behind my firewall Unless I misunderstand your point... ;)