[解決済み] モジュール読み込み時に sys.path.insert(0, path) と sys.path(append) を使用した場合の影響について
質問
最近、PythonのImportErrorで、ローカルコンピュータで実行するとモジュールが見つかるのに、CIサーバーでは見つからないという問題がありました。私は、この問題を
sys.path.append(path)
をスクリプト内で
sys.path.insert(0, path)
ここで
path
は文字列モジュールの場所です。
これは私のモジュールであり、インストールされたパッケージではないので ( 関連質問 ) 、なぜパスの順序でこの問題が解決するのでしょうか?
解決方法を教えてください。
pythonは、ディレクトリのチェックインを
sys.path
を見つけるまで、リスト内の
.py
ファイルを探している。
理想的には、あなたのように修正しない限り、カレントディレクトリまたはスクリプトのディレクトリがリストの最初の常に最初の要素になることです。以下から ドキュメンテーション -
プログラム起動時に初期化されるように、このリストの最初の項目である path[0] は、Python インタープリタを起動するために使用されたスクリプトを含むディレクトリです。スクリプトディレクトリが利用できない場合(例えばインタプリタが対話的に起動された場合や、スクリプトが標準入力から読まれた場合)、path[0] は空の文字列になり、これは Python に現在のディレクトリのモジュールを最初に検索するように指示します。スクリプトディレクトリは PYTHONPATH の結果として挿入されるエントリの前に挿入されることに注意してください。
つまり、ほとんどの場合
.py
ファイルをインポートしようとしたモジュールと同じ名前で、カレントディレクトリ (スクリプトが実行されている場所) に置いてください。
また、注意点として
ImportError
の場合、インポートエラーによると
ImportError: No module named main
- を意味するものではありません。
main.py
もし上書きされていたとしても、読み込むのに問題はありません。この上のモジュールが.NET Frameworkで上書きされたのです。
py
または他のファイル。
例
私のディレクトリ構成は以下の通りです。
- test
- shared
- __init__.py
- phtest.py
- testmain.py
現在
testmain.py
を呼び出します。
from shared import phtest
であれば、問題なく動作します。
では、shared.pyをインストールするとしましょう。
test
ディレクトリを作成します。
- test
- shared
- __init__.py
- phtest.py
- testmain.py
- shared.py
を実行しようとすると
from shared import phtest
から
testmain.py
というエラーが表示されます。
ImportError: cannot import name 'phtest'
上で見たように、問題を引き起こしているファイルは
shared.py
ではなく
phtest.py
.
関連
-
pythonを使ったオフィス自動化コード例
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み] python はモジュールをインポートできるのに pytest はできない
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 億の相対的輸入
-
[解決済み] 2次元アレイにおけるピーク検出
-
[解決済み] Pythonエラー "ImportError: No module named"
-
[解決済み】pip install --userでインストールしたパッケージをアンインストールする方法
-
[解決済み] sys.path/PYTHONPATHにディレクトリを追加する。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない