Python モジュールの取得パスに関するディスカッション

序章

異なる Python ファイル間で関数呼び出しを使用すると、次の図に示すようなModuleNotFoundError: No module named 'file1'問題が見つかりました。

ここに画像の説明を挿入

from file1.tool1 import func

エラー:ModuleNotFoundError: No module named 'file1'

問題はどこだ?これがこの記事の問題の原因であり、詳しく説明します。

一連の考え

ここに画像の説明を挿入
上図の全体的な考え方によれば、モジュールのインポートは第一次导入とに分かれています。第二次导入

最初のインポート

まず、モジュールの検索パス順序に従って検索します。

  1. 内蔵モジュール
  2. sys.pathに存在するパス

解決:

  1. 直接変更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))
  1. 環境変数を変更するPYTHONPATH
windows中在我的电脑-->属性-->环境变量-->添加环境变量
注,pycharm需要另一种设置方式

「設定」をクリックし、選択しますShow All
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

Shell系统下使用命令
export PATHONPATH={PATH}:$PATHONPATH
  1. 特定のパスの下に.pthファイルを追加する
import site
print(site.getsitepackages())

印刷結果フォルダーの.pth末尾に任意のファイルを追加し、その内容のパスを入力します。
ここに画像の説明を挿入
ここに画像の説明を挿入

2回目のインポート

2 番目のインポートでは、すでにロードされているモジュールから検索します。

import sys
print(sys.modules)

要約する

Python インポート モジュールは、パスによって引き起こされる問題を軽減するために、現在のパスに従って判断する必要があります。

おすすめ

転載: blog.csdn.net/frighting_ing/article/details/130836663