Python 3.8导入模块和自定义模块的顺序
Python 3.8 order of import modules and custom modules
我对导入顺序和使用感到困惑。
正如您在下面的代码中看到的,在 main 中我首先导入 psycopg2。
然后我导入 data_connect(依赖于 psycopg2),所以有两个问题:
(1) 为什么解释器看不到我已经导入了 psycopg2?
(2) 我该如何解决这个问题?
谢谢!
错误信息:
File "C:\home\partscobra.com\wwwroot\data_connect.py" in data_connect:
db_conn = psycopg2.connect(...
NameError: name 'psycopg2' is not defined"
main.py:
import psycopg2
from data_connect import data_connect, data_cursor
#error here
[snip]
data_connect.py:
def data_connect():
t_host = "blahblahblah"
t_port = "5432"
t_dbname = "inventory"
t_user = "remote"
t_pw = "blahblahblah"
db_conn = psycopg2.connect(
host=t_host,
port=t_port,
dbname=t_dbname,
user=t_user,
password=t_pw
)
db_conn.autocommit=True
return db_conn
def data_cursor():
db_conn = data_connect()
db_cursor = db_conn.cursor()
return db_cursor
您导入的内容会添加到当前命名空间(在本例中是 main
模块的全局命名空间),而不是每个模块(例如 data_connect
)。
如果您在 data_connect.py
中 import psycopg2
,那么 psycopg2
将被添加到您的 data_connect
模块的全局命名空间中。
我对导入顺序和使用感到困惑。 正如您在下面的代码中看到的,在 main 中我首先导入 psycopg2。 然后我导入 data_connect(依赖于 psycopg2),所以有两个问题: (1) 为什么解释器看不到我已经导入了 psycopg2? (2) 我该如何解决这个问题? 谢谢!
错误信息:
File "C:\home\partscobra.com\wwwroot\data_connect.py" in data_connect:
db_conn = psycopg2.connect(...
NameError: name 'psycopg2' is not defined"
main.py:
import psycopg2
from data_connect import data_connect, data_cursor
#error here
[snip]
data_connect.py:
def data_connect():
t_host = "blahblahblah"
t_port = "5432"
t_dbname = "inventory"
t_user = "remote"
t_pw = "blahblahblah"
db_conn = psycopg2.connect(
host=t_host,
port=t_port,
dbname=t_dbname,
user=t_user,
password=t_pw
)
db_conn.autocommit=True
return db_conn
def data_cursor():
db_conn = data_connect()
db_cursor = db_conn.cursor()
return db_cursor
您导入的内容会添加到当前命名空间(在本例中是 main
模块的全局命名空间),而不是每个模块(例如 data_connect
)。
如果您在 data_connect.py
中 import psycopg2
,那么 psycopg2
将被添加到您的 data_connect
模块的全局命名空间中。