Now, install python26, tcl and pip. Tcl is one of Pip's required packages. The port tool is supposed to download and install tcl when I install pip. However, in my case, port took forever to download tcl. So I had to intall tcl separately before installing pip, just to make the dependents resolved.
sudo port install python26 sudo port install tcl sudo port install py26-pip
To see where these ports are installed, run port location
port location python26
MacPorts are installed as images. See the following quote from MacPorts.org (http://guide.macports.org/chunked/internals.images.html)
"""
MacPorts port by default is not installed into its final or "activated" location, but rather to an intermediate location that is only made available to other ports and end-users after an activation phase that makes hard links of all its files in ${prefix} that point to the port's files in the image repository. Therefore deactivating a port image to install a different version only removes the hard links in ${prefix} pointing to the previous port version's image -- the deactivated port's image is not disturbed.
"""
(If you are curious about where ${prefix} is defined, open /opt/local/etc/macports/macports.conf, and check "prefix".)
To clean work files, distribution files, and archives, run port clean --all
sudo port clean --all python26
Create a symbolic link to pip-2.6 so that we can simply type pip instead of pip-2.6:
sudo ln -s /opt/local/bin/pip-2.6 /opt/local/bin/pip
If you check pip-2.6, it's a symbolic link that points to /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/pip
/opt/local/Library/Frameworks is defined in macports.conf as "frameworks_dir".
Install virtualenv and virtualenvwrapper
sudo pip install virtualenv sudo pip install virtualenvwrapper
Create a symbolic link to virtualenv
sudo ln -s /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/virtualenv /opt/local/bin/virtualenv
Create a directory to hold the virtual environments.
mkdir ~/.virtualenvs
Add the following two lines in ~/.profile
export WORKON_HOME=$HOME/.virtualenvs source /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/virtualenvwrapper.sh
After editing it, reload the startup file (e.g., run: source ~/.profile).
Create a virtual environment, e.g. "testenv".
mkvirtualenv testenv
A directory "testenv" will be created under ~/.virtualenvs, which hosts the isolated virtual environment. It creates a testenv/lib/python2.6/site-packages directory, where any libraries you install will go. In a minute, I will talk how to install libraries in a virtual environment.
The above command will install a virtual environment that inherits any libraries from your existing python installation's directory. If you want to create a environment without inherits, just add --no-site-packages before the virtual environment name. You may need that when you can't change packages under the python installation's site-packages directory. For more information, see --no-site-packages on virtualenv.openplans.org.
It will also install Setuptools for you. If you use the --distribute option, it will install distribute instead.
mkvirtualenv --no-site-packages --distribute testenv
To see all virtual environments, type workon without any option.
workon
Switch to testenv
workon testenv
If you want to delete testenv, you need to deactivate and then remove it.
deactivate rmvirtualenv testenv
To install a package to a virtual environment, use pip and the -E option.
pip install -E yourvirtualenv yourpackage
Yolk is a convenient tool to list packages used in your virtual environment. Install yolk:
pip install -E testenv yolk
To list packages used in a virtual environment, you need to activate the environment if it's inactive, and type yolk -l
workon testenv yolk -l
References
- SaltyCrane Blog - Notes on using pip and virtualenv with Django
Cool!!!:) Need to check on this, thank
ReplyDeleteGreat post, one change I had:
ReplyDeletepip install -E yourvirtualenv yourpackage
be careful here, -E creates a DIRectory per the version of PIP I am using. I found it more helpful to switch to the virtualenv first, then run pip without the -E to install yolk.