-
Notifications
You must be signed in to change notification settings - Fork 2.3k
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature] Poetry needs a reproducible install for itself #4689
Comments
Hello @awilkins, the recommended installation method for poetry is the fin swimmer |
I pulled def install_poetry(self, version: str, env_path: Path) -> None:
self._overwrite(
"Installing {} ({}): {}".format(
colorize("info", "Poetry"),
colorize("b", version),
colorize("comment", "Installing Poetry"),
)
)
if WINDOWS:
python = env_path.joinpath("Scripts/python.exe")
else:
python = env_path.joinpath("bin/python")
if self._git:
specification = "git+" + version
elif self._path:
specification = version
else:
specification = f"poetry=={version}"
subprocess.run(
[str(python), "-m", "pip", "install", specification],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
check=True,
) Could you point out where it makes use of the lockfile here, because I'm not seeing it? Is this the wrong routine? |
Ah, sorry. Looks like a was to fast with my answer (shouldn't answer during my vacation 😄) Pinning of the dependency was done by vendoring when using the With the new installer script we do not vendor the dependencies anymore. Taking the lock file into account is also not possible during installation, because this would require to have poetry installed. |
We deploy our poetry-developed applications by first installing a requirements.txt that we generate from the lock file using I am in the process of writing a custom install script for the users I support that does the same thing for poetry itself, because we have no choice but to pin both poetry and poetry-core due to a series of releases that are severely broken on Windows (please could somebody give my one-line PR #4682 some love?). Until I complete this custom script, our poetry installation process is to:
Requirements.txt based pinning of dependencies in the installer would be awesome. An alternative (not saying if it's necessarily better) would be to implement the feature discussed in #2778 and use it for poetry itself. |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
Feature Request
When installed, Poetry installs the latest available versions of packages in it's dependency graph.
This has lead to multiple occasions where even when installing a specific version of the Poetry client, differences in the installed libraries have lead to an inconsistent experience.
poetry-core
deprecating support formd5
hashes/simple
) #4688cachecontrol
It's quite ironic for a tool which promotes reproducible builds through the use of a lockfile that it should suffer from breakages caused by installing itself via
pip
.Given the purpose of Poetry (and
poetry-core
), it's very likely to be installed and used in a CI pipeline, where stability and reliability are strong concerns. I humbly submit that installing Poetry andpoetry-core
should be a reproducible act for a given version number.Suggest that this may be achievable by (preferring the first)
poetry build
mode that outputs asetup.py
with frozen dependency specifications based on the lock filepoetry
andpoetry-core
pip freeze
forinstall-poetry.py
instead ofThe text was updated successfully, but these errors were encountered: