I know there has been some very brief discussion of a pure python couchbase API, but did anything actually happen with it?
A reliance on a C library makes deploying on a heterogeneous environment practically impossible.
Mixed environment of clients (Mac, Linux, Windows).
what do you mean when you say it is impossible to deploy libcouchbase? I bet most database connectors choose C libraries for portability, speed and easy of maintenance. It should be not harder as install mysql bindings for example.
We support all of those platforms you mentioned. As sergey mentioned, using C libraries is a common option for many databases because of speed and reliability enhancements.
What platforms are you trying to port to which lack an API?
It’s not that the API driver is not available on that platform. It’s just the ability to deploy a simple python application without the added complexity of compiling the binary library for that platform makes it much more difficult to manage dynamic deployment. There is no real desktop support as an option.
The application, which deploys and updates to desktops using a simple git pull, downloads it’s dependencies through pip with only a PyQT binding being required to run the application. A compiler or additional binary isn’t required.
The application interacts with lots of different services including SSH, postgres, REST services and XMLRPC using pure python packages, so the bootstrap functions can handle the deployment with a minimum of external dependencies.
As far as Windows is concerned, libcouchbase is prepackaged with the extension, so it’s not a problem.
As OS X is a fairly homogenous platform you can get away with prebuilding those things as well. You already use PyQt which is itself much more difficult to build and deploy for multiple platforms - however PyQt ships prebuilt binaries for this purpose.
You can do the same with the Couchbase Python module.
If you tell me a bit more in detail what you’re working with (i.e. platform specifics, mode of deployment), I can give you more detailed information.
In the meantime, read up on Python’s “bdist” target (via setup.py) and have a look here: