While I can use pip to install additional python packages on my development box, sometimes I need to deploy an application into an environment where this isn’t possible. The best solution if the target box is an RPM-based linux distro is to install any necessary python dependencies as RPMs. However, not all python packages are available as rpms.
To build them yourself, you’ll need a package called py2pack. Install it thusly:
pip install py2pack
Let’s say you need to RPM-ify the fastkml package. On CentOS/Fedora/RHEL, do the following:
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} # If you don't already have this cd ~/rpmbuild/SOURCES py2pack fetch fastkml 0.9 # Version number is optional
This will download the fastkml tarball into ~rpmbuild/SOURCES. Next, you’ll need to create the RPM spec file. Py2pack has a few templates, we’ll use the ‘Fedora’ one:
cd ~/rpmbuild/SPECS py2pack generate fastkml 0.9 -t fedora.spec -f python-fastkml.spec
This will generate a spec file, which you may then feed into rpmbuild:
rpmbuild -bb python-fastkml.spec #Use -bs to build a source rpm
This hopefully should work, and will dump an rpm file into the ~/rpmbuild/RPMS directory. Note: This isn’t perfect, I’ve already encountered a few python packages for which this procedure doesn’t work cleanly.
py2pack was recently updated and the dependency detection should work much better now. If you still find problems, please fill github issues 🙂
LikeLiked by 1 person