-
-
Notifications
You must be signed in to change notification settings - Fork 116
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
Use lockfile to specify a reproducible python environment #2896
Comments
Hi @zaneselvans hope it's ok if I chime in on this issue since @lwasser posted it in the pyOS Slack. If you want a workflow tool like
If you were working in pure Python then keeping everything in your pyproject.toml would be great, if possible--see this post on the state of lockfiles for pure Python from Brett Cannon--but it sounds like you've got a "modern data stack" 😭 😏 and you also want a tool that lets you manage it. Hope that helps, love the work you all are doing |
We've had a spate of random breakage due to downstream dependencies so maybe it is finally time to figure out lockfiles. See #2140 for some prior discussion.
Since we are treating PUDL like an application and not a library, we just need one set of dependencies & their versions which is guaranteed to work, not an expansive range of every dependency. See #1669 for some rationale and discussion.
There are several possibilities with various pros and cons. Earlier this year @lwasser wrote this post about putting together the @pyOpenSci Python Package Guide which might be helpful.
Considerations:
catalystcoop.pudl
to continue being distributed as a package, or will it only be installable from the git repository?pandoc
,nodejs
,sqlite
,libsnappy
? Conda and Docker seem to be the most common solutions here.conda-lock
Pros
mamba
solver is extremely fast and reliable.conda
/mamba
to manage our environments.pyproject.toml
conda-lock
and dependabot both work with Poetry, configured inpyproject.toml
conda-forge
be installed from PyPI.Cons
environment.yml
files, so we'd like all to read all dependencies inpyproject.toml
.package[extras]
specified inpyproject.toml
conda-forge
) which are often done by different people, and this can lead to stale or abandoned packages. Taking on responsibility for theconda-forge
packaging isn't so bad, but it can be a little bit of a hassle. Currentlysphinx-apidoc
andrecordlinkage
are out of date and prevent us from creating a validconda-lock
file. I've requested to be a maintainer of recordlinkage.conda
, and then running Tox inside that environment and having it re-install everything in another virtual environment does feel kind of duplicative, but I guess we're effectively doing that now -- it's just that we're installing all of the packages viapip
and suffering from downstream dependency issues.Poetry
Pros
Cons
PDM
pixi
Pros
conda
ecosystem for platform-specific binaries.mamba
+conda-lock
?Cons
The text was updated successfully, but these errors were encountered: