lanl / BEE

Other
17 stars 3 forks source link

Replace Pipenv with Poetry #84

Closed Boogie3D closed 5 years ago

Boogie3D commented 5 years ago

Pipenv has limited functionalities, such as a lack of actually packaging capabilities and for doing relational comparisons of required Python versions other than checking equality (i.e., pipenv check fails if someone is using Python 3.7).

Since we can test different Python versions with CI, requiring any and all contributors to use Python 3.6.8 is unnecessarily restrictive and can hamper development progress in the future. I propose that we replace our Pipenv dependency management system with Poetry--an alternative that uses the more flexible and standardized pyproject.toml configuration file to replace both Pipfile and setup.py.

Like Pipenv, poetry can create a virtual environment based off the system Python install or that specified by .python-version (used by Pyenv). It supports many of the same commands as Pipenv (and more) and seems likely to be a more successful project in the long-run (some Pipenv developers' attitudes are reminiscent of the ill-fated Antergos and aurman projects).

If we decide to go this route, I can spend the time to modify the repo and to get everyone's environments set up again without Pipenv.

mcpherson commented 5 years ago

We're unrestricted in what we use for development so I say go for it. Maybe create a branch off master, set it up and test, then a pull request for a couple of us to test it.

betisb commented 5 years ago

I agree let's push for the poetry since at this stage it early enough to change the tool that we are using.

mcpherson commented 5 years ago

I just did a quick Google and it looks like poetry also has "issues" with virtual environments (e.g. pyenv). @Boogie3D Check it out carefully and don't go down a rabbit hole if it looks sketchy (i.e. no better than what we have now).

See https://github.com/sdispater/poetry/issues/305#issuecomment-407463426

...which actually looks rational to me.

Boogie3D commented 5 years ago

@mcpherson I installed Poetry using my system's Python 3.7 and managed to get a Python 3.6.8 virtual environment working using Poetry with Pyenv. I had to change one thing related to Pyenv (which is documented in doc/poetry.md) but it seems to work just fine.