ModuleNotFoundError on psycopg2 only on compiled scrip(仅在已编译的脚本上出现在psycopg2上的ModuleNotFoundError)

2024-09-28 15:03:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用psycopg2完成一个关于数据库输入的教程,但是我似乎无法让我的脚本找到它。使用pip安装,我的脚本是用Atom编写的。当我在命令提示符下导入psycopg2时,它工作正常,但我的Atom脚本不会运行:

原子脚本

import sys
sys.path.append('c:\\users\j.meiring\appdata\local\programs\python\python36-32\lib\site-packages')
print(sys.path)
import psycopg2

def create_table():
    conn=psycopg2.connect("dbname='database1' user='postgres' password='postgres123' host='localhost' port='5432'")
    cur=conn.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS store (item TEXT, quantity INTEGER, price REAL)")
    conn.commit()
    conn.close()

def insert(item,quantity,price):
    conn=psycopg2.connect("lite.db")
    cur=conn.cursor()
    cur.execute("INSERT INTO store VALUES (?,?,?)",(item,quantity,price))
    conn.commit()
    conn.close()

def view():
    conn=psycopg2.connect("lite.db")
    cur=conn.cursor()
    cur.execute("SELECT * FROM store")
    rows=cur.fetchall()
    conn.close()
    return rows

def delete(item):
    conn=psycopg2.connect("lite.db")
    cur=conn.cursor()
    cur.execute("DELETE FROM store WHERE item=?",(item,))
    conn.commit()
    conn.close()

def update(quantity,price,item):
    conn=psycopg2.connect("lite.db")
    cur=conn.cursor()
    cur.execute("UPDATE store SET quantity=?, price=? WHERE item=?",(quantity,price,item,))
    conn.commit()
    conn.close()

create_table()
#print(view())

命令输出

C:\Users\J.Meiring\Documents\Py\Database>script2.py
['C:\\Users\\J.Meiring\\Documents\\Py\\Database', 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64\\python36.zip', 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64\\DLLs', 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64\\lib', 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64', 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64\\lib\\site-packages', 'c:\\users\\j.meiring\x07ppdata\\local\\programs\\python\\python36-32\\lib\\site-packages']
Traceback (most recent call last):
  File "C:\Users\J.Meiring\Documents\Py\Database\script2.py", line 4, in <module>
    import psycopg2
ModuleNotFoundError: No module named 'psycopg2'

C:\Users\J.Meiring\Documents\Py\Database>python
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print("'c:\\users\j.meiring\appdata\local\programs\python\python36-32\lib\site-packages' in sys.path")
'c:\users\j.meiringppdata\local\programs\python\python36-32\lib\site-packages' in sys.path
>>> print('c:\\users\j.meiring\appdata\local\programs\python\python36-32\lib\site-packages' in sys.path)
False
>>> sys.path.append('c:\\users\j.meiring\appdata\local\programs\python\python36-32\lib\site-packages')
>>> print('c:\\users\j.meiring\appdata\local\programs\python\python36-32\lib\site-packages' in sys.path)
True
>>> import psycopg2
>>>

Tags: pathlibpackageslocalsyssiteconnitem
1条回答
网友
1楼 · 发布于 2024-09-28 15:03:54

首先,在代码中显示这一点,向sys.path添加一个路径:

sys.path.append('c:\\users\j.meiring\appdata\local\programs\python\python36-32\lib\site-packages')

但是,您的错误似乎有所不同。为了便于阅读,我在它提供的路径中添加了换行符。你知道吗

['C:\\Users\\J.Meiring\\Documents\\Py\\Database',
 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64\\python36.zip',
 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64\\DLLs',
 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64\\lib',
 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64',
 'C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python36_64\\lib\\site-packages',
 'c:\\users\\j.meiring\x07ppdata\\local\\programs\\python\\python36-32\\lib\\site-packages']

请注意最后一行中的这部分路径。。。你知道吗

'c:\\users\\j.meiring\x07ppdata\\local......

这里不是appdata,而是x07ppdata。它可以是0x07,也可以是BELL字符(控制字符,通常不可见)。可能这个字符是嵌入在文件中的某种unicode字符,您没有注意到,因为它在呈现时看起来是正确的?在任何情况下,这个x07ppdata目录都不存在,因此该路径没有帮助。你知道吗

相关问题 更多 >