Pip + virtualenv

  • 209 views
Uploaded on

My presentation for the very first PizzaPy.ph meetup.

My presentation for the very first PizzaPy.ph meetup.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
209
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
2
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. pip + virtualenv
  • 2. More WHY? than HOW?
  • 3. What’s pip? pip is a tool for installing and managing Python packages.
  • 4. It’s similar to yum, apt, homebrew, rubygems, etc...
  • 5. How do you get pip? $ easy_install pip
  • 6. Wait. What’s easy_install? easy_install is a tool for installing and managing Python packages.
  • 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. 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. Basic pip usage... # Searching... $ pip search json # Installing... $ sudo pip install simplejson # Updating… $ sudo pip install --upgrade simplejson # Uninstalling… $ sudo pip uninstall simplejson
  • 10. What’s virtualenv? virtualenv is a tool for creating isolated Python environments.
  • 11. It’s similar to chroot, FreeBSD jails, Ruby’s bundler, etc...
  • 12. Why or when do we need virtualenv?
  • 13. To answer that, we have to ask another question.
  • 14. What happens when you install something with pip? A system-wide install!
  • 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. Main use cases: ● Different projects are going to need different versions of packages. ● Provide packages only to the projects that need them.
  • 17. One virtualenv for each project/repo you’re working on. TIP!
  • 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. CONFESSION TIME I don’t really use virtualenv.
  • 20. Use virtualenvwrapper. Vanilla virtualenv makes me want to cry.
  • 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. Everything that happens between workon and deactivate only apply to the current virtualenv. REMEMBER!
  • 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. BONUS Because non sequitur...
  • 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. 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. END Questions?