* Thomas B. Passin <tpassin@mitretek.org> [10:59 03/05/02] :
There are several possibilities. Here are some:
1) Use an environmental variable. This means you have to remember to set the variable before running Zope.
Seems a bit like a quick hack no ??
2) Put your code into a package (put it into a directory on the python path and put an __init__.py file into that directory). When you import the package, you can get the complete path from the package's __file__attribute. For example, if you have a package called "altlas":
import atlas,os.path PATH=os.path.dirname(atlas.__file__)
3) A variation on 2) is to create a variable in the package's __init__.py file:
import os.path BASEPATH=os.path.dirname(__file__)
Now when you import the package, the BASEPATH variable is available. To do this, you may need to put your code into subdirectories or subpackages under the package.
These two solutions seem cool, i'll try them. but I've found this function by browsing in the source the ZopeTutorialProduct : import App.Common App.Common.package_home seems to return the home of the package (duh !!)
4) You could also try making the path be relative to that of Zope by using os.cwd() or sys.argv[0], but that might be less robust.
Humm as you say this is less robust. So I won't even try it. -- Évrard Nicolas SOLIREM SA - Projet Smartainers 1, rue de l'épervier Tel: +32 4 248 08 85 B-4040 Herstal Fax: +32 4 248 05 78