modifiable config files in compiled code?
Thomas Heller
theller at python.net
Fri Mar 11 04:56:51 EST 2005
Stephen Thorne <stephen.thorne at gmail.com> writes:
> On 10 Mar 2005 06:02:22 -0800, gaudetteje at gmail.com
> <gaudetteje at gmail.com> wrote:
>> Hi All,
>>
>> I've been trying to come up with an elegant solution to this problem,
>> but can't seem to think of anything better than my solution below.
>>
>> I have a Python program that needs to be converted into an executable.
>> The problem is that I have a "config" template file that I've been
>> using to modify initialization constants such as paths, global
>> variables, structures, etc. Obviously, once I convert my code into an
>> executable I can no longer read/write to my configuration file.
>>
>> My solution was to convert this config file into a standard ASCII text
>> document and have Python parse it for user set variables. This doesn't
>> seem like the most elegant of solutions; however, and I thought others
>> must have implemented a better way than this.
>>
>> Anyone have a better solution for this problem?
>
> Package config.py outside the zipfile containing all the python bytecode.
>
> 1) Remove config.pyc from dist\Library.zip as the last thing you do in
> your setup.py.
You can save this step by using the exclude module option of py2exe.
> 2) As the first thing you do in main.py (or whatever your main is), do:
>
> import sys, os
> try:
> import config
> except ImportError:
> # We're in a py2exe, so we'll append an element to the (one element)
> # sys.path which points to Library.zip, to the directory that contains
> # Library.zip, allowing us to import config.py
> sys.path.append(os.path.split(sys.path[0]))
> import config
>
> 3) Put in your setup.py
>
> setug( ....
> data=[('.', ['config.py'])]# Package config.py seperately.
> )
>
>
> Regards,
> Stephen Thorne
More information about the Python-list
mailing list