0

奇妙な python モジュールのインポートの問題に遭遇しました。

ボイラーパイプモジュールをインポートしようとすると、

from boilerpipe.extract import Extractor

私はこの例外を得ました:

 Original exception was:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/boilerpipe-1.2.0-py2.7.egg/boilerpipe/extract/        __init__.py", line 2, in <module>
    import urllib2
  File "/usr/lib/python2.7/urllib2.py", line 94, in <module>
    import httplib
  File "/usr/lib/python2.7/httplib.py", line 1140, in <module>
    import ssl
  File "/usr/lib/python2.7/ssl.py", line 58, in <module>
    import textwrap
      File "/usr/lib/python2.7/textwrap.py", line 40, in <module>
class TextWrapper:
  File "/usr/lib/python2.7/textwrap.py", line 82, in TextWrapper
    whitespace_trans = string.maketrans(_whitespace, ' ' * len(_whitespace))
AttributeError: 'module' object has no attribute 'maketrans'

インターネットで検索したところ、Python 2.6 では「str」モジュールの名前が「string」モジュールに変更されました。したがって、これはコード ライブラリのどこかに「文字列」モジュールが正しくインポートされていないように見えます。

しかし、本当に奇妙なことは、homeディレクトリから python コードを実行し、同じコードを (pythonシェルまたは を使用してpython pyfile.py) 実行すると、正常に動作することです! インポートエラーがなくなりました。

だから私は少し混乱しています。誰でもヒントを教えてもらえますか?

ありがとう!

4

2 に答える 2

3

の他のスクリプトsys.pathは「string.py」と呼ばれ、stdlib モジュールをマスクしています。

于 2013-05-30T19:28:36.087 に答える
1

string.pyインポートされたファイルがないことを再確認してください。

これをデバッグするには、次の場所に配置します。

import sys
raise Exception("string module: %r" %(sys.modules.get("string"), ))

これにより、どの文字列モジュールがインポートされたかがわかります (または、 が表示されている場合はNone、まだstringモジュールがインポートされていません)。

于 2013-05-30T19:30:20.313 に答える