I have a project in Python where I have a server. The server can have a variety of different services, but I don't know what those are until I start it up. I want it to do a search of available plugin files to know what services are available.

Right now, I'm doing that by just having the metadata files as Python source code and loading it using imp.load_source.

My question is where do I store these metadata files? The metadata files need to contain information pointing to files on the filesystem. For example, one of the programs the service needs to launch is a java program. I have the jar file and I compile it myself, but when I'm working on the project the compiled file goes into the build directory. When I'm going to want to install this on a machine, I'll need to store the files somewhere else. I want to keep the source directory and build directory separate (as it makes the clean command easier).

What standard practice is done to handle the need for metadata files and where they are located?

EDIT: I'm trying to target both Windows and Linux systems (and hopefully Mac systems too, but that's less important). For Linux, most important are the major distributions (such as Fedora and Debian) and hopefully others (although this is dependent on others trying to use it on whatever distribution, as I cannot test all of them and will only test on Fedora and Debian myself).

  • Please pick an operating system. Further, for Linux, it helps to pick a specific distribution.
    – S.Lott
    Apr 27, 2011 at 17:58

1 Answer 1


This sounds like you're reinventing software deployment. There are some great free tools for this! Using one will save you tons of headache and hassle, now and in the future, at the expense of learning one new simple tool.

I've had good experience with Buildout, which is quite widely used in Python projects and highly recommended.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.