Pipenv, creado por Kenneth Reitz hace poco más de dos años, se ha convertido en el recurso oficial recomendado por Python para administrar dependencias de paquetes.
Pero todavía hay confusión sobre qué problemas resuelve y cómo es más útil que el flujo de trabajo estándar usando pip y un archivo requirements.txt. En esta charla se intentará explicar la solución a dichos problemas.
2. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Who am I
Andreu Vallbona @avallbona
Bachelor degree in computer science
Web developer at APSL, Mallorca, Spain
Mainly developing with Python and Django
3. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
What we do at APSL
Web development
Systems engineering - devops
Data science
Mobile apps
Consulting and formation
4. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
What it is?
it’s a package and virtualenv
managing system
it’s aimed to replace
the use of pip and virtualenv
5. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Created by
Kenneth Reitz
Creator of many
useful projects such as:
Requests: HTTP for Humans
Maya: Datetimes for Humans
Records: SQL for Humans
Requests-HTML: HTML Parsing for Humans
6. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Current state of the art
Before pipenv we used to
create a python environment
with virtualenv
install some packages
freeze the dependencies
7. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
requirements.txt anatomy
list of dependencies
with pinned versions
8. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Problems
Problems
9. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Problems
pip and virtualenv are concepts
difficult to understand for beginners
10. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Problems
requirements.txt
is difficult to maintain
11. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Problems
we have to remember
to update the requirements.txt file
12. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Problems
For different environments
we need to maintain
several requirements.txt files
13. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Problems
we do not easily know
what python version
the project uses
14. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Problems
transitive relations
A -> B -> C
15. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Solutions
Solutions
16. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
What problems does pipenv solve?
avoid manually maintenance
of the dependencies
17. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
What problems does pipenv solve?
easy to know which
version of python
the project uses
18. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
What problems does pipenv solve?
show us the dependencies
in a more concise way
19. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
What problems does pipenv solve?
update dependencies
securely and automatically
20. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
What problems does pipenv solve?
allow us to have a
default environment
and a development environment
21. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Installation
Installation
22. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Installation
pip install --user pipenv
23. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Pipfile anatomy
Specify the packages we want
Production and development
sections
Human readable
Toml format
Specify the python version
24. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Pipfile.lock anatomy
Specify the packages we need
Json format
Machine readable
Easy to parse
Pinned versions
Hashes
25. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Pipfile.lock anatomy
Specify the packages we need
Json format
Machine readable
Easy to parse
Pinned versions
Hashes
26. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
Usage
27. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
pipenv install
creates the virtualenv
28. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
29. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
pipenv shell
activates the virtualenv
30. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
31. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
pipenv install <package-name>
install a package
32. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
33. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
pipenv install <package-name> --dev
install a package
in the development environment
34. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
35. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
pipenv uninstall <package-name>
uninstall a package
36. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
37. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
pipenv clean
uninstall packages
not specified in Pipfile.lock
38. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
39. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
pipenv graph
Displays currently installed
dependency graph information
40. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
41. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
pipenv run command
runs a command inside
the virtualenv without activating it
42. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
43. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
pipenv check
checks for security vulnerabilities
44. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
45. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
pipenv lock -r > requirements.txt
generates a requirements.txt file
46. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
47. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
pipenv install -r requirements.txt
imports a requirements.txt file
48. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
49. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
50. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
load .env files automatically
51. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Usage
52. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
usage
pipenv install -c .
can discover requirements
from the codebase
53. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
usage
54. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
usage
pipenv check --unused .
show potentially
unused dependencies
55. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
usage
56. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Integration
Integration
57. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Integration with pyenv
pipenv --python 3.4.1 install
integrates well with pyenv
58. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Integration with pyenv
59. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Integration with docker
60. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Integration with platforms and editors
integrated with
platforms and editors
Heroku (Cloud Hosting)
Platform.sh (Cloud Hosting)
PyUp (Security Notification)
Emacs (Editor Integration)
Fish Shell
(Automatic $ pipenv shell!)
VS Code (Editor Integration)
PyCharm (Editor Integration)
61. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
utility
Utility
62. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
utility
Pipenv Pipes
https://github.com/gtalarico/pipenv-pipes
Pipenv Environment Switcher
63. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
utility
64. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
caveats
Caveats
65. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
caveats
It’s slow when locking dependencies
Always tries to update
dependencies by default
66. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
caveats
The default It’s
update packages
always to lastest
versions
67. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
caveats
But it can be solved !!!
68. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Caveats
69. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
Caveats
Or directly pinning
all the versions into
the Pipfile
70. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
alternatives
Alternatives
71. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
alternatives
Poetry
https://poetry.eustace.io/
Hatch
https://github.com/ofek/hatch
72. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
thanks
Thank you!
Questions?
@avallbona
73. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
resources of interest
https://www.pythonforbeginners.com/basics/how-to-use-pip-and-pypi
https://realpython.com/pipenv-guide/
https://www.kennethreitz.org/essays/announcing-pipenv
https://nvie.com/posts/better-package-management/
https://nvie.com/posts/pin-your-packages/
https://medium.com/@jimjh/managing-dependencies-in-python-applications-b9c93dda98c2
74. Pipenv: Python Dev Workflow for Humans
Andreu Vallbona - PyDay Mallorca - September 2019
resources of interest
https://www.promptworks.com/blog/pin-all-dependencies
https://www.well-typed.com/blog/2008/04/the-dreaded-diamond-dependency-problem/
https://medium.com/@DJetelina/pipenv-review-after-using-in-production-a05e7176f3f0
https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-delivers-very-little/
https://np.reddit.com/r/Python/comments/8jd6aq/why_is_pipenv_the_recommended_packaging_tool_by/
http://journal.kennethreitz.org/entry/r-python