最近Pythonを学習する過程で、作者はpycharmで正常に動作したプロジェクトをvscodeに入れてみたところ、作者のカスタムモジュールが見つからないなどのエラーを発見し、いくつかの格言やメソッドを参考にしたので記録します。ここで解決策。
序文
vscode がカスタム モジュールを見つけられない理由は、そのPYTHONPATHに関連しています。作成者のディレクトリ構造を次の図に示します。
実践後、do_mysql.py が testDatas と同じレベルにある場合、上記のステートメントは正常にインポートできることがわかります。また、do_mysql.py が do_excel.py と同じレベルにインポートされている場合: import do_excel もインポートできることがわかりました。正常にインポートされました。
しかし、インポートモジュール: from testDatas import filePath、エラー「No module names 'testDatas'」
目標: do_mysql.py の filePath.py() を参照する
エラーが引用符で囲まれているため、現在のファイル構造で testDatas が見つからないことを意味します。sys をインポートし、sys.path を出力し、現在のパスを確認できます。
これらのパスのうち最初の 1 つだけが作成者のプロジェクトに関連しており、それが do_mysql.py のディレクトリであるため、testDatas が見つからないことがわかります。したがって、filePath.py を導入したい場合は、まず testDatas を見つける必要があるため、次の 2 つの方法があります。
解決
方法 1
パスを絶対パスとしてsys.path に追加します (「D:\pro\interfaceTest」は作成者のプロジェクト パスです)。
import sys
sys.path.append("D:\pro\interfaceTest")
パスを相対パスとして sys.path に追加します。
import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '../testDatas'))
現在のプロジェクトの .vscode (隠しディレクトリ) の下に settings.json (そのようなファイルがない場合は、自分で追加できます) に追加します。
{
"python.analysis.extraPaths": ["./testDatas"]
}
右上隅にある実行ボタンをクリックして有効にします。
方法 2
最初の方法は有効ですが、ファイルごとにこれを実行する必要があるのは非常に面倒なので、次のインポートを容易にするためにモジュールのパスを構成できます。
まず、「env」: {"PYTHONPATH": "${workspaceRoot}"} を .vscode の下の launch.json に追加します。
{
"version": "0.2.0",
"configurations": [
{
// 省略其他
"env": {"PYTHONPATH": "${workspaceRoot}"}
}
]
}
.vscode の下に settings.json を追加します。
{
// 省略其他
"terminal.integrated.env.windows": {
"PYTHONPATH": "${workspaceFolder};${env:PYTHONPATH}"
}
}
上記のファイルを保存し、do_mysql.py で F5 を押すと有効になります。!!ただし、右上隅にある実行ボタンをクリックしても、「testDatas」という名前のモジュールがありませんと報告されますが、それは問題ではありません。vscode を再起動してもう一度実行すると、成功します。
もう一度確認してください
この時点で、sys.path を出力して以下を確認できます。
InterfaceTest ディレクトリがロードされていることがわかります。