NoSuchModuleError:无法加载插件:sqlalchemy.dialects:redshift.psycopg2

luc*_*umi 6 sqlalchemy python-2.7 vagrant amazon-redshift vagrantfile

我试图从我的python代码连接到redshift.我的点子安装:

psycopg2==2.6.1
redshift-sqlalchemy==0.4.1
SQLAlchemy==1.0.9
Run Code Online (Sandbox Code Playgroud)

我的虚拟机有:

libpq-dev
python-psycopg2
Run Code Online (Sandbox Code Playgroud)

但我还是得到了

 engine = create_engine('redshift+psycopg2://{}:{}@{}'.format(username, password, url))
  File "/opt/project/env/local/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 386, in create_engine
    return strategy.create(*args, **kwargs)
  File "/opt/project/env/local/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 51, in create
    entrypoint = u._get_entrypoint()
  File "/opt/project/env/local/lib/python2.7/site-packages/sqlalchemy/engine/url.py", line 131, in _get_entrypoint
    cls = registry.load(name)
  File "/opt/project/env/local/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 205, in load
    (self.group, name))
NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:redshift.psycopg2
Run Code Online (Sandbox Code Playgroud)

使用相同的配置,我可以从我的笔记本电脑(mac)运行,但在Linux上,我想有些软件包仍然缺失?任何建议将不胜感激,谢谢!

For*_*had 13

我遇到了同样的问题,波纹管分辨率顺利解决了它。

环境 :

蟒蛇 3.7

康达 4.6.14

依赖:

须藤 apt-get 安装 python-pip

须藤 apt-get 安装 libpq-dev

pip install --user psycopg2

pip install --user sqlalchemy

pip install --user sqlalchemy-redshift

连接字符串:

connection_string = sa_url.URL(
        drivername='postgresql+psycopg2',
        username='admin',
        password='admin',
        host='redshiftone.********.us-west-2.redshift.amazonaws.com',
        port='5439',
        database='redshiftone')
Run Code Online (Sandbox Code Playgroud)


dav*_*ell 7

我发现一些教程将驱动程序列为: postgres+psycopg2://...使用它时,我收到了该错误:

NoSuchModuleError:无法加载插件:sqlalchemy.dialects:redshift.psycopg2

只需将其更改为:

postgresql+psycopg2://
        ^^
Run Code Online (Sandbox Code Playgroud)

立即修复。


Bra*_*Dre 6

获得 NoSuchModule 异常的一个笨拙的方法是数据库连接字符串的格式错误。就我而言,我在更改时收到此错误

DB_URI = 'postgresql://...'
Run Code Online (Sandbox Code Playgroud)

DB_URI = 'pg8000://...'
Run Code Online (Sandbox Code Playgroud)

但应该是:

DB_URI = 'postgresql+pg8000://
Run Code Online (Sandbox Code Playgroud)


par*_*din 2

我遇到了同样的问题,当我删除package.json__pycache__中的目录时解决了它redshift_sqlalchemy

转到你的站点包,在我的例子中是在我的 virtualenv 中。

所以cdvirtualenvcd lib/python3.5/site-packages/redshift_sqlalchemy最后rm __pycache__