Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Pipenv python dev workflow for humans

416 views

Published on

Pipenv: it’s a package and virtualenv managing system it’s aimed to replace the use of pip and virtualenv.

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Pipenv python dev workflow for humans

  1. 1. Pipenv! Python Dev Workflow for Humans Andreu Vallbona Pycones 2018
  2. 2. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Who am I Andreu Vallbona @avallbona Bachelor degree in computer science Web developer at APSL, Mallorca, Spain Mainly developing with Python and Django
  3. 3. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 What we do at APSL Web development Systems engineering - devops Data science Mobile apps Consulting and formation
  4. 4. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 What it is? it’s a package and virtualenv managing system it’s aimed to replace the use of pip and virtualenv
  5. 5. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 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. 6. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Current state of the art Before pipenv we used to create a python environment with virtualenv install some packages freeze the dependencies
  7. 7. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 requirements.txt anatomy list of dependencies with pinned versions
  8. 8. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Problems Problems
  9. 9. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Problems pip and virtualenv are concepts difficult to understand for beginners
  10. 10. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Problems requirements.txt is difficult to maintain
  11. 11. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Problems we have to remember to update the requirements.txt file
  12. 12. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Problems For different environments we need to maintain several requirements.txt files
  13. 13. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Problems we do not easily know what python version the project uses
  14. 14. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Problems transitive relations A -> B -> C
  15. 15. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Solutions Solutions
  16. 16. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 What problems does pipenv solve? avoid manually maintenance of the dependencies
  17. 17. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 What problems does pipenv solve? easy to know which version of python the project uses
  18. 18. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 What problems does pipenv solve? show us the dependencies in a more concise way
  19. 19. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 What problems does pipenv solve? update dependencies securely and automatically
  20. 20. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 What problems does pipenv solve? allow us to have a default environment and a development environment
  21. 21. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Installation Installation
  22. 22. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Installation pip install --user pipenv
  23. 23. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Pipfile anatomy Specify the packages we want Production and development sections Human readable Toml format Specify the python version
  24. 24. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Pipfile.lock anatomy Specify the packages we need Json format Machine readable Easy to parse Pinned versions Hashes
  25. 25. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Pipfile.lock anatomy Specify the packages we need Json format Machine readable Easy to parse Pinned versions Hashes
  26. 26. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage Usage
  27. 27. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage pipenv install creates the virtualenv
  28. 28. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  29. 29. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage pipenv shell activates the virtualenv
  30. 30. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  31. 31. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage pipenv install <package-name> install a package
  32. 32. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  33. 33. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage pipenv install <package-name> --dev install a package in the development environment
  34. 34. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  35. 35. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage pipenv uninstall <package-name> uninstall a package
  36. 36. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  37. 37. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage pipenv clean uninstall packages not specified in Pipfile.lock
  38. 38. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  39. 39. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage pipenv graph Displays currently installed dependency graph information
  40. 40. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  41. 41. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage pipenv run command runs a command inside the virtualenv without activating it
  42. 42. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  43. 43. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage pipenv check checks for security vulnerabilities
  44. 44. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  45. 45. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage pipenv lock -r > requirements.txt generates a requirements.txt file
  46. 46. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  47. 47. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage pipenv install -r requirements.txt imports a requirements.txt file
  48. 48. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  49. 49. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  50. 50. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage load .env files automatically
  51. 51. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Usage
  52. 52. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 usage pipenv install -c . can discover requirements from the codebase
  53. 53. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 usage
  54. 54. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 usage pipenv check --unused . show potentially unused dependencies
  55. 55. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 usage
  56. 56. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Integration Integration
  57. 57. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Integration with pyenv pipenv --python 3.4.1 install integrates well with pyenv
  58. 58. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Integration with pyenv
  59. 59. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 Integration with docker
  60. 60. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 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. 61. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 utility Utility
  62. 62. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 utility Pipenv Pipes https://github.com/gtalarico/pipenv-pipes Pipenv Environment Switcher
  63. 63. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 utility
  64. 64. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 caveats Caveats
  65. 65. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 caveats It’s slow when locking dependencies Always tries to update dependencies by default
  66. 66. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 alternatives Alternatives
  67. 67. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 alternatives Poetry https://poetry.eustace.io/ Hatch https://github.com/ofek/hatch
  68. 68. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 thanks Thank you! Questions? @avallbona
  69. 69. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 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
  70. 70. Pipenv: Python Dev Workflow for Humans Andreu Vallbona - Pycones - October 2018 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

×