On Sat, Sep 11, 2004 at 11:52:16AM -0700, Bill Hewitt wrote:
I am asking this question again in hopes that maybe this time it will make more sense....
What I want to do is reuse code from one product to the next in a Python Class...... This is trivial in a ZClass, but ????
Anyway, I create a new Python Product "FOO" and I want to import the methods of another Python Product "Bar" ("FOO" and "BAR" are next to each other in the Products Directory), so I add "import Bar" into my __init__.py file for "FO0"
Two points here: 1) You're mixing different capitalization styles. You might get away with that on Windows but it will bite you on any case-sensitive platform... 2) You don't need to import Bar in Foo's __init__.py, you should instead put your imports in whatever module of Foo actually needs to call methods from Bar. See below for how to do this.
When I do this, the ZServer complains that the module does not exist..... So, I try: "from Bar import Bar" and "from Bar.Bar import Bar" and "from Products.Bar import Bar"
The latter should work, so something must be wrong. Here's a working example of the CMFDefault product importing something from the CMFCore product: from Products.CMFCore.CMFCorePermissions import View This works because the following conditions are satisfied: 1) CMFCore is a proper package: i.e. it must have an __init__.py file. 2) CMFCore is placed in the Products directory. 3) CMFCore/CMFCorePermissions.py must exist. 4) CMFCorePermissions.py must have a module-level name View. -- Paul Winkler http://www.slinkp.com