为什么python';正在尝试从我的项目目录导入datetime的sqlite3模块?
我试图遵循SQLite接口的示例。第一行代码似乎工作不正常:为什么python';正在尝试从我的项目目录导入datetime的sqlite3模块?,python,sqlite,python-module,Python,Sqlite,Python Module,我试图遵循SQLite接口的示例。第一行代码似乎工作不正常: import sqlite3 因此,试图导入python的sqlite3模块就是试图从调用脚本目录而不是它所在的任何地方导入python的datetime,如下面的回溯所示。我不明白为什么。我错过了什么 Traceback (most recent call last): File "sqlite_test.py", line 3, in <module> import sqlite3 File "/us
import sqlite3
因此,试图导入python的sqlite3模块就是试图从调用脚本目录而不是它所在的任何地方导入python的datetime,如下面的回溯所示。我不明白为什么。我错过了什么
Traceback (most recent call last):
File "sqlite_test.py", line 3, in <module>
import sqlite3
File "/usr/lib/python2.7/sqlite3/__init__.py", line 24, in <module>
from dbapi2 import *
File "/usr/lib/python2.7/sqlite3/dbapi2.py", line 24, in <module>
import datetime
File "/home/brian/dev/py/datetime.py", line 3, in <module>
now = datetime.now()
AttributeError: 'module' object has no attribute 'now'
回溯(最近一次呼叫最后一次):
文件“sqlite_test.py”,第3行,在
导入sqlite3
文件“/usr/lib/python2.7/sqlite3/_init__uu.py”,第24行,在
从dbapi2导入*
文件“/usr/lib/python2.7/sqlite3/dbapi2.py”,第24行,在
导入日期时间
文件“/home/brian/dev/py/datetime.py”,第3行,在
now=datetime.now()
AttributeError:“模块”对象没有“现在”属性
只需将/home/brian/dev/py/datetime.py
模块重命名为非datetime.py
,因为它与datetime内置模块同名
请避免将模块命名为与标准库或内置模块名称相同的名称。更详细地说,有一个名为
datetime
的Python内置模块,用于管理
您已经创建了一个名为datetime.py
的文件,该文件对应于名为datetime
的模块。由于sqlite
希望使用Python内置的datetime
模块,因此它将导入该模块——但您在同一目录中创建了一个同名文件这一事实意味着Python的优先级规则将选择该模块而不是内置模块
作为类比,如果您在工作目录中创建了一个文件sqlite3.py
,import sqlite3
将为您提供该模块,而不是内置模块
这个故事的寓意是:不要给内置的名字加上阴影。谢谢。。。我不会再犯那个错误了。谢谢你的类比!