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 に答える