2016-11-29 1 views
-1

私は、importステートメントのpackagenameがpythonスクリプトの実際のファイル名と等しい場合、なぜpythonに問題があるのだろうかと思います。あなたはそれを深く説明できますか?それはいつも愚かな間違いです。ありがとうございました!packagenameがfilenameと等しい場合にインポートエラーが発生するのはなぜですか?

+0

あなたは自分自身からパッケージをインポートしようとしていますか?何のために? –

+0

私の知る限り、パッケージ名とファイル名は同じにすることができます! –

+0

私はそれ自体からパッケージをインポートしたくありません。それは単にファイルの悪い命名です。たとえば、 "youtube"という名前のパッケージがあり、Pythonファイルのimportステートメント "youtube"と同じ名前が付けられているとします。なぜそれはPythonで処理できないのですか? – schui

答えて

0

あなたの質問が正しく理解されていれば、同じ名前のパッケージとモジュールのインポートをどのように処理するかを尋ねています。モジュールfoo.pyとパッケージfoo/があるとします。

ファイルfoo.py

print("foo module loaded") 

ファイルfoo/__init__.py

print("foo package loaded") 

ファイルtest1.py

import foo 

ファイルtest2.py

import os, imp 

def import_module(dir, name): 
    """ load a module (not a package) with a given name 
     from the specified directory 
    """ 
    for description in imp.get_suffixes(): 
     (suffix, mode, type) = description 
     if not suffix.startswith('.py'): continue 
     abs_path = os.path.join(dir, name + suffix) 
     if not os.path.exists(abs_path): continue 
     fh = open(abs_path) 
     return imp.load_module(name, fh, abs_path, (description)) 

import_module('.', 'foo') 

は今すぐテストを実行している:

$ python test1.py 
foo package loaded 

$ python test2.py 
foo module loaded 
関連する問題