packageis_english_word
内のモジュールで関数を呼び出そうとしています。階層は次のとおりです。dict.py
dictionary
DataCleaning
|___ text_cleaner.py
|___ dictionary
|___ dict.py
|___ list_of_english_words.txt
明確にするために、私はdict.py
とlist_of_english_words.txt
という 1 つのパッケージを持っていますdictionary
。
で書かれたインポートステートメントは次のtext_cleaner.py
とおりです。
import DataCleaning.dictionary.dict as dictionary
で書かれたコードは次のdict.py
とおりです。
import os
with open(os.path.join(os.path.dirname(os.path.realpath('__file__')), 'list_of_english_words.txt')) as word_file:
english_words = set(word.strip().lower() for word in word_file)
def is_english_word(word):
return word.lower() in english_words
しかし、text_cleaner.py
ファイルを実行すると、次のファイルが見つからないため、インポート エラーが表示されますlist_of_english_words.txt
。
Traceback (most recent call last):
File "E:/Analytics Practice/Social Media Analytics/analyticsPlatform/DataCleaning/text_cleaner.py", line 1, in <module>
import DataCleaning.dictionary.dict as dictionary
File "E:\Analytics Practice\Social Media Analytics\analyticsPlatform\DataCleaning\dictionary\dict.py", line 3, in <module>
with open(os.path.join(os.path.dirname(os.path.realpath('__file__')), 'list_of_english_words.txt')) as word_file:
FileNotFoundError: [Errno 2] No such file or directory: 'E:\\Analytics Practice\\Social Media Analytics\\analyticsPlatform\\DataCleaning\\list_of_english_words.txt'
しかし、dict.py
コード自体を実行すると、エラーは表示されません。が ではなくos.path.dirname(os.path.realpath('__file__'))
のディレクトリを指していることがはっきりとわかります。モジュールが呼び出された場所とは無関係に、モジュールのインポートを行うにはどうすればよいですか?text_cleaner.py
dict.py
dict.py