Graham Dumpleton wrote:
> On Feb 24, 11:08 am, Michael Hipp <Mich... Hipp.com> wrote:
>> Malcolm Tredinnick wrote:
>>
>>> On Sat, 2008-02-23 at 16:02 -0600, Michael Hipp
wrote:
>>>> Where in my Django code files can I set the
current working directory
>>>> (so that it applies to all my code)?
>>>> I'm trying to make sure that all paths in
my Python code are relative
>>>> paths. But I think I need to know where I
can put the cwd change so that
>>>> it runs when Django first comes up.
>>> No, you don't. What you want to do is set the
Python path variable in
>>> your environment. Have a look at Django's
documentation on mod_python
>>> setup to see how to set that environment
variable. That's the standard
>>> way to do this.
>> I think we're talking about two different things. I
have the PythonPath
>> variable set in my httpd.conf file. No problem with
imports.
>>
>> I wasn't speaking of imports.
>>
>> But I have lots of "data" files that live
in and around my Django code
>> and I have to access with them with stuff like:
>>
>> f = open("somedir/myfile.dat", 'r')
>>
>> So how do I make those lines look like that instead
of having a bunch of
>> absolute paths stuck in there or lots of messy
stuff with
>> os.path.join(os.path.dirname(__file__)...) in it?
>
> Don't. You should never ever write a web application
such that it will
> only work if the current working directory is a
specific directory, it
> is just very bad practice to do so.
>
> This is because in hosting systems like Apache there is
absolutely no
> guarantee that the working directory will be something
in particular
> and you can't even change it to be a specific value and
expect it to
> work reliably. This is because in any sort of system
where the process
> is shared by other code you didn't write or which is
outside of your
> control, you can't prevent that other code also wanting
to change the
> working directory and subsequently screwing up your
code.
>
> Python web frameworks or applications which have to one
degree or
> another made a choice to somehow rely on the current
working directory
> being a specific value are limiting the deployment
choices for their
> users by doing so. You are thus highly discouraged
against doing it
> and using __file__ as an anchor or a variable setting
in main settings
> configuration file is a better and more portable way of
doing it.
Ok. Thanks. The idea of putting it in settings.py is
probably the path
of least litter.
Michael
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the
Google Groups "Django users" group.
To post to this group, send email to django-users googlegroups.com
To unsubscribe from this group, send email to
django-users-unsubscribe googlegroups.com
For more options, visit this group at htt
p://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---
|