Ger*_*nuk 2 python sqlalchemy pydev
我尝试安装SQLAlchemy for Python 3.2,我使用Eclipse/Pydev.一个简单的测试脚本失败
from sqlalchemy.engine import create_engine
engine=create_engine("mysql://user:password@server/database")
Run Code Online (Sandbox Code Playgroud)
如果我从Eclipse运行它我得到
Traceback (most recent call last):
File "...\sqlalchemy.py", line 1, in <module>
from sqlalchemy.engine import create_engine
File "...\sqlalchemy.py", line 1, in <module>
from sqlalchemy.engine import create_engine
ImportError: No module named engine
Run Code Online (Sandbox Code Playgroud)
但是我实际上使用Ctrl-Shirt-O生成了导入行,因此Eclipse自动发现并了解它.Pydev也没有在脚本中显示任何错误.
如果我在交互式Pydev控制台中尝试相同的脚本,我得到
from sqlalchemy.engine import create_engine
engine=create_engine("mysql://user:password@server/database")
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Python32\lib\site-packages\sqlalchemy-0.7.8-py3.2.egg\sqlalchemy\engine \__init__.py", line 338, in create_engine
return strategy.create(*args, **kwargs)
File "C:\Python32\lib\site-packages\sqlalchemy-0.7.8-py3.2.egg\sqlalchemy\engine\strategies.py", line 64, in create
dbapi = dialect_cls.dbapi(**dbapi_args)
File "C:\Python32\lib\site-packages\sqlalchemy-0.7.8-py3.2.egg\sqlalchemy\connectors\mysqldb.py", line 52, in dbapi
return __import__('MySQLdb')
ImportError: No module named MySQLdb
Run Code Online (Sandbox Code Playgroud)
你知道如何让它工作吗?
答案很简单:您的主模块已命名sqlalchemy.py
.这是一个更容易陷入python 2的陷阱 - 用与系统模块相同的名称命名自己的模块.
在启动时,你sqlalchemy.py
的python作为__main__
模块加载,当第一行运行时,python重新加载sqlalchemy.py
为模块sqlalchemy
; 进口线运行Python解释器,第二次已经发现sqlalchemy
的sys.modules
,但它不包含命名变量或模块engine
.
对于简单的办法更名sqlalchemy.py
为例子satest.py
.要获得更完整的解决方案,请在包中组织代码.
归档时间: |
|
查看次数: |
3121 次 |
最近记录: |