Pip + virtualenv

316
-1

Published on

My presentation for the very first PizzaPy.ph meetup.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
316
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Pip + virtualenv

  1. 1. pip + virtualenv
  2. 2. More WHY? than HOW?
  3. 3. What’s pip? pip is a tool for installing and managing Python packages.
  4. 4. It’s similar to yum, apt, homebrew, rubygems, etc...
  5. 5. How do you get pip? $ easy_install pip
  6. 6. Wait. What’s easy_install? easy_install is a tool for installing and managing Python packages.
  7. 7. But wait; there’s more! If you’re using a *NIX system, you can probably install pip via your OS’s package manager. You can probably also install Python packages using your OS’s package manager.
  8. 8. So why use pip over X? easy_install: ● I honestly don’t know, but if you enjoy parroting, click here: http: //www.pip-installer.org/en/latest/other-tools.html#pip-comparedto-easy-install Your OS’s package manager: ● Versions are usually outdated, especially for large projects
  9. 9. Basic pip usage... # Searching... $ pip search json # Installing... $ sudo pip install simplejson # Updating… $ sudo pip install --upgrade simplejson # Uninstalling… $ sudo pip uninstall simplejson
  10. 10. What’s virtualenv? virtualenv is a tool for creating isolated Python environments.
  11. 11. It’s similar to chroot, FreeBSD jails, Ruby’s bundler, etc...
  12. 12. Why or when do we need virtualenv?
  13. 13. To answer that, we have to ask another question.
  14. 14. What happens when you install something with pip? A system-wide install!
  15. 15. Why is this bad? ● Only one version for the entire machine. ● You’ll end up with a lot of packages on /usr/local ● I totally made the second one up so I can use bullet points
  16. 16. Main use cases: ● Different projects are going to need different versions of packages. ● Provide packages only to the projects that need them.
  17. 17. One virtualenv for each project/repo you’re working on. TIP!
  18. 18. Basic virtualenv usage... # Creating a virtualenv... $ virtualenv ENV # creates a directory named ENV # Activating a virtualenv $ source bin/activate # Manage your virtualenv’s packages # A new virtualenv includes pip in ENV/bin/pip ... # Leaving a virtualenv $ source bin/deactivate
  19. 19. CONFESSION TIME I don’t really use virtualenv.
  20. 20. Use virtualenvwrapper. Vanilla virtualenv makes me want to cry.
  21. 21. Basic virtualenvwrapper usage... # Creating a virtualenv... $ mkvirtualenv env_name # Activating a virtualenv $ workon env_name # Manage your virtualenv’s packages # (install, update, uninstall, etc) ... # Leaving a virtualenv $ deactivate
  22. 22. Everything that happens between workon and deactivate only apply to the current virtualenv. REMEMBER!
  23. 23. For virtualenvs that you can “pass around” # Save all the packages you are using to a file... $ pip freeze > requirements.txt # Install all packages you needed from a file... $ pip install -r requirements.txt # Especially useful for projects with more than one person working on it...
  24. 24. BONUS Because non sequitur...
  25. 25. virtualenvs and environment variables... #!/bin/bash # $WORKON_HOME/pizzapy/bin/postactivate export DB_NAME=pizzapy export DB_USER=root export DB_PASSWORD=a1f9234a0f2cbd028 export DB_HOST=192.20.12.98 export DB_PORT=3306
  26. 26. virtualenvs and environment variables... # in your Python code... import os DATABASES = { ‘default’: { ‘NAME’: os.environ[‘DB_NAME’] ‘USER’: os.environ[‘DB_USER’] ‘PASSWORD’: os.environ[‘DB_NAME’] ‘NAME’: os.environ[‘DB_PASSWORD’] ‘HOST’: os.environ[‘DB_HOST’] } }
  27. 27. END Questions?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×