【问题标题】:NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:redshift.psycopg2NoSuchModuleError:无法加载插件:sqlalchemy.dialects:redshift.psycopg2
【发布时间】:2016-02-21 00:23:05
【问题描述】:

我正在尝试从我的 python 代码连接到 redshift。 我的点子安装:

psycopg2==2.6.1
redshift-sqlalchemy==0.4.1
SQLAlchemy==1.0.9

我的虚拟机有:

libpq-dev
python-psycopg2

但我还是得到了

 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

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

【问题讨论】:

  • 抱歉,之前的帖子真的不行了。
  • 与其苦苦挣扎 redshift.psycopg2 并直接使用 postgresql+psycopg2,它工作正常 :)
  • 这个问题的确切解决方案是什么?我需要连接 redshift 并且 postgresql+psycopg2 不起作用。

标签: python-2.7 sqlalchemy vagrant amazon-redshift vagrantfile


【解决方案1】:

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

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

只需将其更改为:

postgresql+psycopg2://
        ^^

立即修复它。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,下面的解决方案顺利解决了。

    环境:

    Python 3.7

    康达 4.6.14

    依赖:

    sudo apt-get install python-pip

    sudo apt-get install 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')
    

    RDS Code Sample,Python

    【讨论】:

    • 什么是 sa_url?
    • @joydeepbhattacharjee 我记得从 sqlalchemy.engine 导入 url as sa_url
    【解决方案3】:

    获取 NoSuchModule 异常的愚蠢方法是 db 连接字符串的格式错误。就我而言,我在更改时遇到了这个错误

    DB_URI = 'postgresql://...'
    

    DB_URI = 'pg8000://...'
    

    但应该是:

    DB_URI = 'postgresql+pg8000://
    

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,当我删除 redshift_sqlalchemy 包中的 __pycache__ 目录时解决了它。

      在我的情况下,转到您的站点包在我的 virtualenv 中。

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

      【讨论】:

      • 您好,尝试删除 pycache 目录,但仍然出现相同的错误。无法加载插件:sqlalchemy.dialects:redshift.psycopg2
      • 你重启服务了吗?请给我你正在遵循的步骤。
      • @paridin 重启哪些服务?现在,我通过脱离虚拟环境并在主 Python 环境中运行它来解决它。它运行得很好。
      • 当你启动一个进程并且它使用一个端口时,它是一个服务,我使用 iPython 和笔记本来工作,所以我需要重新启动该服务以执行一个干净的进程,我建议删除 __pycache__文件夹中,如果你有一个需求文件,你应该删除你的环境并重新创建一个新的,这是简单的方法,如果你有时间,你必须寻找对站点包的引用并将它们删除。我不建议使用主环境,因为您可以破坏它并且很难修复。
      猜你喜欢
      • 2019-04-16
      • 2019-03-28
      • 2023-01-17
      • 2021-11-04
      • 2019-07-29
      • 2020-03-27
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多