という名前のローカル モジュールtokenize.py
があり、同じ名前の標準ライブラリ モジュールをマスクします。これは、外部モジュール (sklearn.linear_model) をインポートしようとしたときにのみ発見されました。これはimport tokenize
、標準ライブラリ モジュールを取得し、取得することを期待していますが、代わりにローカル モジュールを取得します。
これは、同じ名前のローカル モジュールがある場合、Python で標準ライブラリ モジュールにアクセスする方法に関連していますか? 、ただし、上記のソリューションを適用するには外部モジュールを変更する必要があるため、設定は異なります。
オプションは local の名前を変更することtokenize.py
ですが、「トークン化」がモジュールの役割を最もよく表しているため、そうしないことをお勧めします。
問題を説明するために、モジュール構造のスケッチを次に示します。
\my_module \__init__.py \tokenize.py \use_tokenize.py
use_tokenize.py には、次のインポートがあります。
import sklearn.linear_model
を呼び出すと、次のエラーが発生しますpython my_module/use_tokenize.py
。
Traceback (most recent call last):
File "use_tokenize.py", line 1, in <module>
import sklearn.linear_model
<...>
File "<EDITED>/lib/python2.7/site-packages/sklearn/externals/joblib/format_stack.py", line 35, in <module>
generate_tokens = tokenize.tokenize
AttributeError: 'module' object has no attribute 'tokenize'
外部モジュールをインポートするときにローカル モジュールを抑制する方法はありますか?
編集: Python のバージョンによって解決策が異なるというコメントがあったため、タグとして python2.7 を追加しました