install.python-poetry.org icon indicating copy to clipboard operation
install.python-poetry.org copied to clipboard

Allow to set METADATA_URL in an environment variable

Open arnauddeblic opened this issue 1 year ago • 6 comments

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

arnauddeblic avatar Jul 11 '24 09:07 arnauddeblic

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?

dimbleby avatar Jul 11 '24 09:07 dimbleby

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"

arnauddeblic avatar Jul 11 '24 09:07 arnauddeblic

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

dimbleby avatar Jul 11 '24 10:07 dimbleby

I tryed both alternative methods, and my feeling was :

  • using pipx was more complex, since it needs to install a new tool
  • i was not very confortable with the manual installation, since it is not detailled for windows

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 -

arnauddeblic avatar Jul 11 '24 10:07 arnauddeblic

I doubt nexus even offers the json API

dimbleby avatar Jul 11 '24 14:07 dimbleby

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... ;)

arnauddeblic avatar Jul 11 '24 14:07 arnauddeblic