Reputation: 2483
I'm working on a new Python authentication library for WSGI frameworks and want to use the python-openid and maybe some other third-party libs too. I see 2 options:
The question is:
What is the preferred conventional way of incorporating a third party library in Python open source projects?
Upvotes: 5
Views: 224
Reputation: 25680
The preffered way is to use setuptools/distribute and define a setup.py for your project that downloads third-party libraries via PyPi.
Here's an extract from one of my projects. Note the use of setup/install/test/extras-require keyword arguments, which is what you're looking for
import distribute_setup
distribute_setup.use_setuptools()
import os
from setuptools import setup, find_packages
# Utility function to read the README file.
# Used for the long_description. It's nice, because now 1) we have a top level
# README file and 2) it's easier to type in the README file than to put a raw
# string in below ...
def read(fname):
return open(os.path.join(os.path.dirname(__file__), fname)).read()
setup(
name='buildboticon',
version='0.3.2',
author='Marcus Lindblom',
author_email='[email protected]',
description=('A buildbot monitoring utility'),
license='GPL 3.0',
keywords='buildbot systemtray pyqt',
url='http://bitbucket.org/marcusl/buildboticon',
download_url='http://packages.python.org/buildboticon',
package_dir={'':'src'},
packages=find_packages('src', exclude=['*.tests']),
long_description=read('README'),
entry_points={
'setuptools.installation': [
'eggsecutable = bbicon:main',
],
'gui_scripts': [
'buildboticon = bbicon:main',
]
},
setup_requires=[
'setuptools_hg',
],
tests_require=[
'unittest2 >= 0.5',
'mock >= 0.7.0b4',
],
install_requires=[
'pyyaml >= 0.3',
# 'pyqt >= 4.7' # PyQt doesn't have anything useful on PyPi :(
],
extras_require={
'speech': ['pyspeech >= 1.0'],
# 'phidgets': ['PhidgetsPython >= 2.1.7'],
},
Full file here: https://bitbucket.org/marcusl/buildboticon/src/5232de5ead73/python/setup.py
Upvotes: 5