当我运行脚本时,我遇到了这个ImportError:
$ python ~/Dropbox/code/py/ZoteroFindOrphanedFiles.py
Traceback (most recent call last):
File "/home/zane/Dropbox/code/py/ZoteroFindOrphanedFiles.py", line 1, in <module>
import sqlite3
File "/usr/lib/python3.2/sqlite3/__init__.py", line 23, in <module>
from sqlite3.dbapi2 import *
File "/usr/lib/python3.2/sqlite3/dbapi2.py", line 23, in <module>
import datetime
File "/usr/lib/python3.2/datetime.py", line 20, in <module>
import math as _math
File "/home/zane/Dropbox/code/py/math.py", line 3, in <module>
from nzmath.rational import Integer, Rational
ImportError: No module named nzmath.rational
但是在运行交互式会话时我没有:
$ python
Python 3.2.3 (default, Apr 23 2012, 23:14:44)
[GCC 4.7.0 20120414 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>>
为什么?
答案 0 :(得分:4)
问题在于:
import math as _math
File "/home/zane/Dropbox/code/py/math.py", line 3, in <module>
您有自己的名为math.py
的模块,但这与同名的标准Python模块相同。不建议这样做。
解决方法是将您的math.py
重命名为其他内容,并且不要忘记删除同一目录中的math.pyc
(否则您仍然会同样的问题)。
答案 1 :(得分:0)
您有一个本地文件
/home/zane/Dropbox/code/py/math.py
正在导入而不是标准的lib math
模块。
解决方案是将您的/home/zane/Dropbox/code/py/math.py
重命名为其他内容。
当您在/home/zane/Dropbox/code/py
目录中调用脚本时会出现问题,因为这会将此目录添加到sys.path
的开头,因此当Python尝试导入模块时,将首先搜索此目录。
答案 2 :(得分:0)
脚本目录中有一个名为math.py
的文件,这会影响stdlib math
模块。重命名文件。