序章
異なる Python ファイル間で関数呼び出しを使用すると、次の図に示すようなModuleNotFoundError: No module named 'file1'
問題が見つかりました。
from file1.tool1 import func
エラー:ModuleNotFoundError: No module named 'file1'
問題はどこだ?これがこの記事の問題の原因であり、詳しく説明します。
一連の考え
上図の全体的な考え方によれば、モジュールのインポートは第一次导入
とに分かれています。第二次导入
最初のインポート
まず、モジュールの検索パス順序に従って検索します。
- 内蔵モジュール
sys.path
に存在するパス
解決:
- 直接変更
sys.path
ただし今回のみ
import sys
sys.path.append(PATH)
# 针对上一级目录可以如下写法
# SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
# sys.path.append(os.path.dirname(SCRIPT_DIR))
- 環境変数を変更する
PYTHONPATH
windows中在我的电脑-->属性-->环境变量-->添加环境变量
注,pycharm需要另一种设置方式
「設定」をクリックし、選択しますShow All
Shell系统下使用命令
export PATHONPATH={PATH}:$PATHONPATH
- 特定のパスの下に
.pth
ファイルを追加する
import site
print(site.getsitepackages())
印刷結果フォルダーの.pth
末尾に任意のファイルを追加し、その内容のパスを入力します。
2回目のインポート
2 番目のインポートでは、すでにロードされているモジュールから検索します。
import sys
print(sys.modules)
要約する
Python インポート モジュールは、パスによって引き起こされる問題を軽減するために、現在のパスに従って判断する必要があります。