0

当我运行脚本时,我有这个 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
>>> 

这是为什么?

4

3 回答 3

3

这是问题所在:

  import math as _math
File "/home/zane/Dropbox/code/py/math.py", line 3, in <module>

您有自己的名为 的模块math.py,但这与同名的标准 Python 模块相同。不建议这样做。

解决方案是将您重命名math.py为其他名称,并且不要忘记删除同一math.pyc目录中的(否则您仍然会遇到同样的问题)。

于 2012-07-31T20:13:31.653 回答
0

您有一个 /home/zane/Dropbox/code/py/math.py 正在导入的本地文件,而不是标准的 libmath模块。

解决方案是将您的名称重命名/home/zane/Dropbox/code/py/math.py为其他名称。

当您在/home/zane/Dropbox/code/py目录中调用脚本时会出现问题,因为这会将此目录添加到开头,sys.path因此当 Python 尝试导入模块时会首先搜索此目录。

于 2012-07-31T20:13:23.430 回答
0

您在脚本目录中调用了一个文件math.py,这会影响 stdlibmath模块。重命名文件。

于 2012-07-31T20:13:24.577 回答