[Python-Dev] Setting project home path the best way

Kristján Valur Jónsson kristjan at ccpgames.com
Thu Nov 15 10:17:39 CET 2012


When python is being run from a compile environment, it detects this by looking for "Lib" folders in directories above the one containing the executable. 
(I always thought that this "special" execution mode, hardwired in, was a bit odd, and suggested that this could be made a function of pep405)
Anyway, keeping your executable as part of the tree is the trick I use, and to make things nice I put  right next to it:
site.py
sitecustomize.py

sitecustomize.py is where you would put the logic to set sys.path by walking up the hierarchy and finding the proper root.
site.py is there to merely import sitecustomize.py, in case a site.py is not found in all the default places python looks.

K


> -----Original Message-----
> From: Python-Dev [mailto:python-dev-
> bounces+kristjan=ccpgames.com at python.org] On Behalf Of Christian Tismer
> Sent: 11. nóvember 2012 20:31
> To: python-dev at python.org
> Subject: [Python-Dev] Setting project home path the best way
> 
> Hi friends,
> 
> I have a project that has its root somewhere on my machine.
> This project has many folders and contains quite some modules.
> 
> There is a common root of the module tree, and I want to use
> - either absolute imports
> - relative imports with '.'
> 
> Problem:
> 
> - I want to run any module inside the heirarchy from the command-line
> 
> - this should work, regardless what my 'cwd' is
> 
> - this should work with or without virtualenv.
> 
> So far, things work fine with virtualenv, because sys.executable is in the
> project module tree.
> 
> Without virtualenv, this is not so. But I hate to make settings like
> PYTHONPATH, because these are not permanent. .
> 
> Question:
> 
> How should I define my project root dir in a unique way, without setting an
> environment variable?
> What is the lest intrusive way to spell that?
> 
> Reason:
> 
> I'd like to make things work correctly and unambigously when I call a script
> inside the module heirarchy. Things are not fixed: there exist many
> checkouts In the file system, and each should know where to search its
> home/root in the tree.
> 
> Is this elegantly possible to deduce from the actually executed script file?
> 
> Cheers - chris
> 
> Sent from my Ei4Steve
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-
> dev/kristjan%40ccpgames.com




More information about the Python-Dev mailing list