On Monday 03 March 2008, [EMAIL PROTECTED] wrote: > On Mar 3, 5:09 pm, Tro <[EMAIL PROTECTED]> wrote: > > On Sunday 02 March 2008, Paul McGuire wrote: > > > On Mar 2, 3:48 pm, Tro <[EMAIL PROTECTED]> wrote: > > > > On Sunday 02 March 2008, Terry Reedy wrote: > > > > > "Tro" <[EMAIL PROTECTED]> wrote in message > > > > >news:[EMAIL PROTECTED] > > > > > > > > > > | Hi, list. > > > > > | > > > > > | I've got a simple asyncore-based server. However, I've modified > > > > > | the > > > > > > > > > > asyncore > > > > > > > > > > | module to allow me to watch functions as well as sockets. The > > > > > | modified asyncore module is in a specific location in my project > > > > > | and is imported > > > > > > > > > > as > > > > > > > > > > | usual from my classes. > > > > > | > > > > > | Now I'd like to use the tlslite library, which includes an > > > > > | asyncore mixin class. However, tlslite imports "asyncore", which > > > > > | doesn't include my own modifications. > > > > > | > > > > > | I'd like to know if it's possible to make tlslite load *my* > > > > > | asyncore > > > > > > > > > > module > > > > > > > > > > | without changing any of the tlslite code. > > > > > > > > > > If your module is also 'asyncore' and comes earlier in the search > > > > > path, I would expect the import to get yours. > > > > > > > > It's not. It has a package prefix like my.package.asyncore. I think I > > > > can either move my version of asyncore up a couple of levels or add > > > > the my.package directory to sys.path. > > > > > > > > My version of asyncore imports several functions from the built-in > > > > asyncore. Now that my version of it is imported as asyncore, how > > > > would it import the built-in version from python2.5/site-packages? > > > > > > > > Thanks, > > > > Tro > > > > > > What happens if you do "import my.package.asyncore as asyncore"? > > > > > > If that doesn't work (trying the simplest hack first), I know that > > > there are various hooks in the import mechanism that should help. > > > > In the classes that use my version of asyncore currently, that is how I > > do it. I import my version as "import my.package.asyncore as asyncore". > > In my asyncore module I do "import asyncore", because I override a few > > functions from the asyncore module included with python. However, if I > > were to add "my.package" to sys.path, then I wouldn't be able to "import > > asyncore" from my own asyncore module. I'd have to do some trickery with > > sys.path to take the "my.package" component out, import standard > > asyncore, readd the "my.package" component, so that other modules can > > "import asyncore" and get my version. > > > > Is there a way to import the standard python asyncore module in this > > scenario? > > > > Thanks, > > Tro > > > > > > Are you trying to interfere with the default module on only your > machine? Just rename it. If something in the std. lib. imports > asyncore, they get yours too that way.
No, I'd like it to be a generalized solution and only for this one project. I'm trying to get it to work on any recent python installation out of the box, so I can't rename built-in modules. What I'm trying to do is allow a 3rd party module (tlslite) to import *my* version of asyncore without me going into tlslite's code and changing its import statement explicitly, but only for the scope of this one project. Thanks, Tro -- http://mail.python.org/mailman/listinfo/python-list