1. ホーム

要約:ModuleNotFoundErrorを解決する。tools という名前のモジュールがない問題

2022-02-11 04:27:05

背景 Python3版でinterface automation caseをデバッグする場合、Pycharm IDEでは問題なく動作し、pyスクリプトも正常に実行できますが、ターミナルやDockerマシンでスクリプトを実行すると、No module name 'tools' と表示され続けています。

python3 test1.py



トレースバック(直近の呼び出し)。
  ファイル "test1.py", 行 7, in <module>
    インプットツール
ModuleNotFoundError: 名前 'tools' を持つモジュールがありません。

問題発生場所のアイデア

1、Pythonのパッケージは、各フォルダは、__init__.pyクラスを追加参照することはできません、モジュールのインポート方法は、に変更:インポートツール.ツール、コールメソッドは正しいですが、まだ無効な

2、新しい仮想環境を作成し、プロジェクトからテスト環境を分離し、仮想環境でのスクリプトを実行すると、まだエラーを報告する

python -m venv venvは、組み込みのvenvモジュールで、プロジェクト用に作成された新しい仮想環境です。

python3 -m venv venv
boom -L 2
.
├── Instructie_Installatie
├── ReadMe
├── gemeenschappelijk
│ ├── __init__.py
│ ├── log_test.py
test.log
├─ src
│ ├── test1.py
│ ├── test2.py
│ └─ \227 \225 \230 \233
├─ gereedschap
│ └─ tool.py
├─ hulpprogramma's
│ └── AssertUtil.py
└─ venv
    ├─ bin
    ├─ omvatten
    ├── lib
    └── pyvenv.cfg

# Activeer de virtuele omgeving, ga naar venv/bin
activeer activeer.vis easy_install-3.7 pip3 python
activeren.csh easy_install pip pip3.7 python3

pyOefening % sh . /venv/bin/activate


3、ターミナルでスクリプトを実行すると、次のエラーが報告されます、ディレクトリに移動します: /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ site-packages/tools

python3 test1.py


トレースバック(直近の呼び出し)。
  ファイル "test1.py", 行 8, in <module>
    ツールのインポート
ImportError: Could not import name 'tools' from 'tools' (/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tools /__init__.py)

ディレクトリに入ると、システム組み込みのファイルが表示され、ダブルネーミングが原因であることがわかります、、、( ここで、クラッシュと感じるのは~~~。 ) に変更し、プロジェクトモジュール名 tools を ToolsUtils に変更し、パッケージ名とメソッドを再度インポートすると、問題は解決しました。

didi@ShirleydeMacBook-Pro-tools % cd /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tools
didi@ShirleydeMacBook-Pro gereedschap % tree -L 1
.
├── __init__.py
├── __pycache__
├── const.py
├── content.py
├─ control.py
├─ debug.py
├─ encoding.py
├─ error.py
├─ etree.py
├─ export
├─ feed.py
├─ files.py
├─ google.py
├─ html.py
├─ http.py
├─ internal.py
├─ lock.py
├─ logs.py
├─ metric.py
├─ parser.py
├─ ping.py
├─ progress.py
├─ pwork.py
├─ py3k_support.py
├─ rex.py
├─ russian.py
├─ selenium_tools.py
├─ structured.py
├─ system.py
├─ text.py
├─ user_agent.py
├─ w3lib_encoding.py
├─ watch.py
├─ work.py
└─ yandex.py

2 mappen, 33 bestanden

4. もう一つの解決策は、プロジェクトのパスをpython環境変数のパスに追加することです。

ご覧の通り、pythonコンソールでAdd content roots to PYTHONPATHを選択すると、デフォルトでヒールパスにプロジェクトが追加されます

importeer sys; print('Python %s op %s' % (sys.versie, sys.platform))
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])


<イグ

コード導入モジュールは、コードを追加します。

importeer sys,os
base_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))
sys.path.append(base_path)

サーバーと端末でスクリプトを実行すると、パッケージの名前が正しく認識されます。

結果を分析する。

Pythonの基本的な言語環境の一般的な理解が徹底されていない、その結果、問題の根本的な原因を見つけることができない、まだこれを把握する必要がある、深い学習スキルを持っている必要があります。