【问题标题】:PostgreSQL- ModuleNotFoundError: No module named 'psycopg2'PostgreSQL- ModuleNotFoundError:没有名为“psycopg2”的模块
【发布时间】:2019-09-09 07:49:52
【问题描述】:

我可以确认 psycopg2 已安装(使用 conda install -c anaconda psycopg2),但似乎 psycopg2 无法导入我的 python 脚本或解释器无法找到它。我也尝试使用 pip3 安装,满足要求,这意味着 psycopg2 已经安装,但不明白为什么我的脚本无法导入它。使用 Mac (OS v10.14.4)

$ python create_tables.py
Traceback (most recent call last):
  File "create_tables.py", line 1, in <module>
    import psycopg2
ModuleNotFoundError: No module named 'psycopg2'

$ pip3 install psycopg2
Requirement already satisfied: psycopg2 in /usr/local/lib/python3.7/site-packages (2.8.2)
$ pip3 install psycopg2-binary
Requirement already satisfied: psycopg2-binary in /usr/local/lib/python3.7/site-packages (2.8.2)
python -V
Python 3.7.0

知道为什么会这样吗?

编辑: create_table.py

import psycopg2
from config import config


def create_tables():
    """ create tables in the PostgreSQL database"""
    commands = (
        """
        CREATE TABLE vendors (
            vendor_id SERIAL PRIMARY KEY,
            vendor_name VARCHAR(255) NOT NULL
        )
        """,
        """ CREATE TABLE parts (
                part_id SERIAL PRIMARY KEY,
                part_name VARCHAR(255) NOT NULL
                )
        """,
        """
        CREATE TABLE part_drawings (
                part_id INTEGER PRIMARY KEY,
                file_extension VARCHAR(5) NOT NULL,
                drawing_data BYTEA NOT NULL,
                FOREIGN KEY (part_id)
                REFERENCES parts (part_id)
                ON UPDATE CASCADE ON DELETE CASCADE
        )
        """,
        """
        CREATE TABLE vendor_parts (
                vendor_id INTEGER NOT NULL,
                part_id INTEGER NOT NULL,
                PRIMARY KEY (vendor_id , part_id),
                FOREIGN KEY (vendor_id)
                    REFERENCES vendors (vendor_id)
                    ON UPDATE CASCADE ON DELETE CASCADE,
                FOREIGN KEY (part_id)
                    REFERENCES parts (part_id)
                    ON UPDATE CASCADE ON DELETE CASCADE
        )
        """)
    conn = None
    try:
        # read the connection parameters
        params = config()
        # connect to the PostgreSQL server
        conn = psycopg2.connect(**params)
        cur = conn.cursor()
        # create table one by one
        for command in commands:
            cur.execute(command)
        # close communication with the PostgreSQL database server
        cur.close()
        # commit the changes
        conn.commit()
    except (Exception, psycopg2.DatabaseError) as error:
        print(error)
    finally:
        if conn is not None:
            conn.close()


if __name__ == '__main__':
    create_tables()

【问题讨论】:

  • 你能告诉我们更多关于你试图用 psycopg2 完成什么吗? Pspcopg2 是 ORM 使用的低级数据库适配器;您很少需要将其直接导入您的程序。换句话说,查看 create_tables.py 可能对我们有用。
  • 问题已编辑,显示create_table.py的内容
  • 好的...很高兴看到。我建议您查看SqlAlchemyHere is how to build a schema。它将使您免于一些较低级别的细节。
  • 想一想,SqlAlchemy 不是您唯一的 ORM 选项。还有很多其他的:Peewee、PonyORM、SQLObject、Tortoise ORM。我什至见过在 Django 之外使用 Django 的 ORM。这些中的任何一个都可以为您节省一些直接针对 psycopg2 进行编码的工作。

标签: python python-3.x psycopg2 postgresql-9.1


【解决方案1】:

使用 Python3 的命令是:

python3 -m pip install psycopg2-binary

【讨论】:

  • 问题将 Python 版本声明为3.7.0,因此接受的答案应该适用于 python3。我认为不需要这个。
【解决方案2】:

是的,找到了解决办法,

python -m pip install psycopg2-binary 

成功了!

【讨论】:

  • 太好了,现在你可以删除你的问题,或者接受你自己的答案!
  • 又好又短,谢谢
【解决方案3】:

我假设python 指向python2,但您为python3 安装了psycopg2,因为您使用的是pip3。通过pip install pyscopg2 psycopg2-binary 安装它,pip 应该指向python2

【讨论】:

  • pip install pyscopg2 psycopg2-binary Collecting pyscopg2 Could not find a version that satisfies the requirement pyscopg2 (from versions: ) No matching distribution found for pyscopg2
  • 是的,但是我运行alias python=python3以便使用python3
  • 是的,确实如此。
  • 使用python3打开一个提示,然后尝试import psycopg2那里
  • which 只是指向可执行文件的位置,pippython 当然应该指向不同的位置。这是在黑暗中的另一个镜头,但如果您尝试python -m pip install psycopg2 会怎样?然后尝试从同一个解释器中执行import psycopg2
猜你喜欢
  • 1970-01-01
  • 2020-07-15
  • 1970-01-01
  • 2021-04-06
  • 2021-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
相关资源
最近更新 更多