| 16 | |
| 17 | == setuptools == |
| 18 | |
| 19 | One option is to use a Python packaging tool named [http://cheeseshop.python.org/pypi/setuptools setuptools]. |
| 20 | |
| 21 | Advantages (note that each of these are options provided by setuptools, not requirements imposed by the use of setuptools): |
| 22 | |
| 23 | * management of dependencies (even on platforms that don't have a native package manager); This is the important feature. |
| 24 | |
| 25 | * integration with http://cheeseshop.python.org/ -- with setuptools we can update the [http://cheeseshop.python.org/pypi/allmydata-tahoe allmydata-tahoe metadata at the cheeseshop] automatically, and also upload packages to be distributed from cheeseshop |
| 26 | |
| 27 | * for hackers who want to use Tahoe, and who like setuptools, this makes using Tahoe convenient and pleasant for them |
| 28 | |
| 29 | * replace "build/configure/package/distribute/test/develop" code written in the Make language with code written in Python; One specific instance of this is {{{./setup.py test}}} which runs the unit tests |
| 30 | |
| 31 | Disadvantages: |
| 32 | |
| 33 | * We haven't figured out exactly how to take advantage of setuptools's dependency management while also integrating smoothly with platform-specific package managers such as Debian apt. I (Zooko) think that this is possible, but it isn't yet standard practice among setuptools users. One important detail is the special option to setuptools called {{{--single-version-externally-managed}}}. |