Thanks for the pointers; that was all I needed. Plunking around SQLA's
PluginLoader and dialect.__init__.py with pdb...allowed me to figure out
the problem.

__import__ doesn't reload packages if they are already loaded, but the
check to determine "already loaded",  obviously can't include a comparison
with folder location, since __import__ is given only a name.  I had an
extension, **isolated** from both my package and site-packages, named
"psycopg2", loaded via an explicit folder+name call using
load_module()...but after I loaded it, SQLA couldn't find the original
"psycopg2" package.

I just renamed my project's extension, to something other than an exact
match for psycopg2; all worked.

Thanks SO much, for your help Mike, and making SQLA one the most awesome
libraries ever.

*Jeffrey McLarty*

On Fri, Jul 17, 2015 at 1:41 PM, Mike Bayer <mike...@zzzcomputing.com>
wrote:

>
>
> On 7/17/15 1:39 PM, Mike Bayer wrote:
>
>
>
> On 7/17/15 1:21 PM, Jeffrey McLarty wrote:
>
> Hello,
>
>  I've got a very peculiar situation, where SQLA fails to create an
> engine, because it can't find the installed module, only when I do some
> relatively straightforward package discovery & import logic using
> imp.find_module and imp.load_module.
>
>
> feel free to share that logic.  Otherwise, no clue.
>
>
> oh sorry, I see you did.     this is a little more code than I can follow,
> but you want to make sure you don't prohibit the __import__ line below from
> working.
>
>
>
>
>
>  I'm wondering if SQLAlchemy does some magic
>
>
> only if you consider this to be magic:
>
> module = __import__('sqlalchemy.dialects.%s' % (dialect, )).dialects
>
>
>
>
>  which might be impacted if I've used find_module and load_module
> upstream, despite being in different name spaces(?)
>
>  I'm working with Python 2.7.6, SQLAlchemy 0.9.2, and Postgres 9.4, and
> psycopg2
>
>  Here's the traceback...
>
>   Traceback (most recent call last):
>   File "C:\WinPython-32bit-2.7.6.3-20140407\python-2.7.6\lib\pdb.py",
> line 1314,
>  in main
>     pdb._runscript(mainpyfile)
>   File "C:\WinPython-32bit-2.7.6.3-20140407\python-2.7.6\lib\pdb.py",
> line 1233,
>  in _runscript
>     self.run(statement)
>   File "C:\WinPython-32bit-2.7.6.3-20140407\python-2.7.6\lib\bdb.py",
> line 400,
> in run
>     exec cmd in globals, locals
>   File "<string>", line 1, in <module>
>   File "install.py", line 2, in <module>
>     from equitable.db.psyw import DBpicker, SQLAeng, SmartDB
>   File
> "C:\WinPython-32bit-2.7.6.3-20140407\python-2.7.6\lib\site-packages\trump
> \orm.py", line 2287, in SetupTrump
>     engine = create_engine(engine_str)
>   File
> "C:\WinPython-32bit-2.7.6.3-20140407\python-2.7.6\lib\site-packages\sqlal
> chemy\engine\__init__.py", line 344, in create_engine
>     return strategy.create(*args, **kwargs)
>   File
> "C:\WinPython-32bit-2.7.6.3-20140407\python-2.7.6\lib\site-packages\sqlal
> chemy\engine\strategies.py", line 50, in create
>     dialect_cls = u.get_dialect()
>   File
> "C:\WinPython-32bit-2.7.6.3-20140407\python-2.7.6\lib\site-packages\sqlal
> chemy\engine\url.py", line 116, in get_dialect
>     cls = registry.load(name)
>   File
> "C:\WinPython-32bit-2.7.6.3-20140407\python-2.7.6\lib\site-packages\sqlal
> chemy\util\langhelpers.py", line 186, in load
>     (self.group, name))
> NoSuchModuleError: Can't load plugin:
> sqlalchemy.dialects:postgresql.psycopg2
>
>
>  SQLAlchemy works as expected, (ie, it finds psycopg2) if I comment out
> line 60 of https://github.com/Equitable/trump/blob/master/trump/orm.py
> (and replace the variable "sources" with an empty dictionary).  Line 60, is
> an import to sub-module which dynamically loads modules.
>  --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>
>
>  --
> You received this message because you are subscribed to a topic in the
> Google Groups "sqlalchemy" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/sqlalchemy/AbPSrqH0kb4/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to