First off, why? Well, the common answer for installing things would be "use pip" or "use virtualenv". I tend to prefer to use debian packages when installing things under Ubuntu - primarily because then I only have one packaging system to worry about. This works fine for lots of things since lots of things have sufficiently recent packages. In the case of something like Behave though, this doesn't have any package, so we need to build one for that, and its dependencies.
Partly as a note to self, and for anyone else who may be interested, this is how I did it. First of all we need the sources of behave and its dependencies:
hg clone https://bitbucket.org/stoneleaf/enum34 git clone firstname.lastname@example.org:r1chardj0n3s/parse git clone email@example.com:jenisys/parse_type.git git clone firstname.lastname@example.org:behave/behave
To package these up we need some other things too:
sudo apt-get install python-stdeb sudo apt-get install devscripts
One of the dependencies is available as a package:
sudo apt-get install python-hamcrest
The just package up each dependency and install.
First of enum34:
cd enum34/ python setup.py sdist cd dist/ py2dsc enum34-1.0.4.tar.gz cd deb_dist/ cd enum34-1.0.4 debuild -uc -us cd .. sudo dpkg -i python-enum34_1.0.4-1_all.deb cd ../.. rm -rf dist cd ..
cd parse python setup.py sdist cd dist/ py2dsc parse-1.6.5.tar.gz cd deb_dist/ cd parse-1.6.5 debuild -uc -us cd .. sudo dpkg -i python-parse_1.6.5-1_all.deb cd ../.. rm -rf dist cd ..
cd parse_type/ python setup.py sdist cd dist/ py2dsc parse_type-0.3.5dev.tar.gz cd deb_dist/ cd parse-type-0.3.5dev debuild -uc -us cd .. sudo dpkg -i python-parse-type_0.3.5dev-1_all.deb cd ../.. rm -rf dist/ cd ..
And finally behave itself:
cd behave/ python setup.py sdist cd dist/ py2dsc behave-1.2.6.dev0.tar.gz cd deb_dist/ cd behave-1.2.6~dev0 debuild -uc -us cd .. sudo dpkg -i python-behave_1.2.6~dev0-1_all.deb cd ../.. rm -rf dist/ cd ..
The short and simple guide to installing python packages for Ubuntu:
- Install python-stdeb
- Build an sdist version of your package, make sure it's all good
- Run py2dsc on the library, debuild the resulting package
That's probably a little terse, but gets over how simple this can be if you can ensure that your package's sdist builds cleanly.
Short example of steps involved:
sudo apt-get install python-stdeb tar zxvf guild-0.1.0.tar.gz cd guild-0.1.0/ python setup.py sdist cd dist py2dsc guild-0.1.0.tar.gz cd deb_dist cd guild-0.1.0 debuild -uc -us cd .. sudo dpkg -i python-guild_0.1.0-1_all.deb
(This has been languishing in my drafts folder for a while, so I've shortened to post)