#100DaysOfPyCon2018 Day1: Pipenv: The Future of Python Dependency Management

#100DaysOfPyCon2018 Day1: Pipenv: The Future of Python Dependency Management
Photo by Erda Estremera / Unsplash

Key takeaway:
— กว่าจะมาเป็น pip ที่เราใช้กันทุกวันนี้ก็ผ่านอะไรมาเยอะมากตั้งแต่ยุค build tarball มายุค easy_install มาถึงยุค pip + virtualenv มันยาวนานมาก เพิ่งรู้ว่า easy_install ไม่มี easy uninstall แล้วสมัยนั้นมันลบกันยังไง

— ข้อเสียของยุค pip + requirements.txt คือเราลง package เดียวกันคนละ version ไม่ได้ (Ruby ทำได้) แล้ววิธีที่แนะนำคือ pip freeze > requirements.txt ก็มีปัญหาคือมาดูทีหลังจะงงว่า อันไหนคือ package ที่เราต้องการจริงๆ และ pip-tools พยายามแก้ปัญหานี้แล้วโดยใช้ requirements.in กับ requirements.txt แต่มันก็ยังหลายไฟล์อยู่

— Virtualenv ปัญหาใหญ่สุดคือเข้าใจยากมากสำหรับคนที่เพิ่งใช้ เพราะ concept นี้ใกล้เคียงกับ unix ที่แยก home environment แต่ก้มีคนทำ virtualenv-wrapper (เกิดทันเว้ย) มาแก้ปัญหาในจุดนี้

— Pipfile ทำให้เราแยก group ของ package ที่ลงได้ packages กับ dev packages

— Pipenv ทำให้เราทำงานกับ Pipfile, Pipfile.lock และ virtualenv ได้ง่ายขึ้นโดยไม่ต้องแก้มันตรงๆ ทุกอย่างอยู่ใน interface เดียว แถมรับรอง deterministic build ของ package ด้วย (ผ่าน Pipfile.lock)

— เพิ่งรู้ว่าถ้าสั่ง pipenv python <version> แล้วถ้า version นั้นไม่มี ถ้าเรามี pyenv มันจะลง version นั้นให้เลย

— pipenv install — deploy เอาไว้ลงใน production

— pipenv check เพิ่งเคยเห็นมันเตือนจริงๆ เอาไว้เช็คว่า package เรามี security flaw รึเปล่า (ผ่าน PyUP)

— ถ้าเรามี directory .venv อยู่ใน project folder แล้ว pipenv จะลง virtualenv ให้ในนั้นเลย


Original post at: https://yothinix.medium.com/100daysofpycon2018-day1-pipenv-the-future-of-python-dependency-management-508ab54769da