packageis_english_word内のモジュールで関数を呼び出そうとしています。階層は次のとおりです。dict.pydictionary
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.pydict.pydict.py