要約:ModuleNotFoundErrorを解決する。tools という名前のモジュールがない問題
背景 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の基本的な言語環境の一般的な理解が徹底されていない、その結果、問題の根本的な原因を見つけることができない、まだこれを把握する必要がある、深い学習スキルを持っている必要があります。
関連
-
Build Record 2-CSS file not loaded-Solved-Resource interpreted as Stylesheet but transferred with MIME type text/plain
-
Mac マシンに nvm をインストールする際の落とし穴 - nvm コマンドが見つかりません。
-
can't find '__main__' module in "問題の詳細!
-
Python using pip to install modules with ReadTimeoutError: HTTPSConnectionPoolの解決策
-
unity build when エラー
-
Tensorflowのデータ(next_batch)を読み込む方法は以下の3つです。
-
zsh: コマンドが見つかりません 解決策
-
vue startup error throw er; // 処理されない 'エラー' イベント
-
TypeError: key: expected bytes or bytearray, but got 'str' 問題は解決した。
-
フロントエンドのhttpリクエストタイムアウトの概要について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
gitアップロードファイルのエラーを修正する方法 [rejected] master -> master (fetch first) error: failed to push some refs to '.
-
コマンドラインオプション "-std=c++11" が認識されない場合の対処法
-
error: '}' トークンの前に未修飾のIDが必要です。
-
Python Basics: io.UnsupportedOperation: 読み取れません。
-
中に内部エラーが発生しました。「Javaツーリングの初期化」中に内部エラーが発生しました。
-
Android Studioアップデート後の警告 アプリがGoogle検索でインデックスされない
-
numpy.random.multivariate_normalの使用法
-
java.net.BindException: バインドに失敗しました。EADDRINUSE (アドレスは既に使用中です) 解決方法
-
スーパークラス「javax.servlet.http.HttpServlet」がJavaビルドパスソリューションで見つかりませんでした。
-
Javaでnacosにログインし、設定を変更して公開する。