-
Notifications
You must be signed in to change notification settings - Fork 2.3k
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
Clarify arguments against Pipenv in README #488
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -237,25 +237,24 @@ At this point the rest of the resolution is straightforward since there is no mo | |
|
||
#### Install command | ||
|
||
When you specify a package to the `install` command it will add it as a wildcard | ||
dependency. This means that **any** version of this package can be installed which | ||
can lead to compatibility issues. | ||
When you specify a package to the `install` command without specifying any version constraints, | ||
it will add it as a wildcard dependency. This means that **any** version of this package | ||
can be installed which can lead to compatibility issues. | ||
|
||
Also, you have to explicitly tell it to not update the locked packages when you | ||
install new ones. This should be the default. | ||
|
||
#### Remove command | ||
#### Uninstall command | ||
|
||
The `remove` command will only remove the package specified but not its dependencies | ||
The `uninstall` command will only remove the package specified but not its dependencies | ||
if they are no longer needed. | ||
|
||
You either have to use `sync` or `clean` to fix that. | ||
You have to use `clean` to fix that. | ||
|
||
#### Too limited in scope | ||
|
||
Finally, the `Pipfile` is just a replacement from `requirements.txt` and, in the end, you will still need to | ||
populate your `setup.py` file (or `setup.cfg`) with the exact same dependencies you declared in your `Pipfile`. | ||
So, in the end, you will still need to manage a few configuration files to properly setup your project. | ||
Finally, the `Pipfile` is just an upgrade from `requirements.txt` and, in the end, | ||
you will still need to manage a few configuration files to properly setup your project. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You will still need a It is also is kinda strange that you are supposed to put one part of your dependencies in There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Pipenv doesn't explicitly support libraries which is why the weird workarounds are required to get it to play nice with a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. that is exactly the point of There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I didn't mention |
||
|
||
|
||
## Commands | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You only reworded original text, but it seems to me like it is not exactly valid argument in the first place, as your are supposed to use
Pipfile.lock
when usingpipenv
- it is even mentioned in the next sentence! it is constrained.But then lets say for some unknown reason (which is an edge on its own) you lost your lock and rerun from
Pipfile
, unless you changed default package index (again, an edge case) you will get the same or newer version... so exactly the same thing as Poetry.Due these reasons I don't really see how this argument is valid.
I guess it would make more sense if second sentence was:
This means that your dependency list alone does not reflect minimal version requirements that project has been tested against.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The difference between Pipenv and Poetry in this regard is that by default Poetry pins the package to the latest semver compatible release. This saves you from the surprise when one of your other dependencies requires an earlier version that's incompatible with your code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The
Pipfile.lock
would save you from any potential disasters but the main point is about having a sensible default to create that lock from.