[解決済み] Pythonの検索パスを他のソースに展開する
質問
私は、かなり大きな既存のコードベースを持つプロジェクトに参加したところです。私たちは Linux で開発しており、IDE を使用していません。私たちはコマンドラインを通して実行します。私は、プロジェクト モジュールを実行するときに、正しいパスを検索するために python を取得する方法を見つけ出そうとしています。例えば、私が何かを実行するとき、次のようなものです。
python someprojectfile.py
私は
ImportError: no module named core.'somemodule'
私は、パスの問題だと仮定して、私のすべてのインポートに対してこれを取得します。
どのようにしたらPythonに
~/codez/project/
とすべてのファイルやフォルダを
*.py
のファイルをインポートすることができますか?
どのように解決するのですか?
いくつかの方法が考えられます。
-
環境変数を設定する
PYTHONPATH
に、インポートされたモジュールを検索するディレクトリをコロンで区切ったリストを設定します。 -
プログラム中では
sys.path.append('/path/to/search')
を使って、Python にインポートされたモジュールを検索させたいディレクトリの名前を追加します。sys.path
は Python がモジュールのインポートを要求されるたびに検索するディレクトリのリストに過ぎず、必要に応じて変更することができます(ただし、標準のディレクトリを削除することはお勧めしません!)。環境変数に入れたディレクトリはPYTHONPATH
に入れたディレクトリはsys.path
に挿入されます。 -
使用方法
site.addsitedir
にディレクトリを追加します。sys.path
. これと単なる追加との違いはaddsitedir
を使う場合、それはまた.pth
ファイルを探し、それを使って追加のディレクトリをsys.path
に追加することができます。詳細はドキュメントを参照してください。
これらのうちどれを使いたいかは、あなたの状況によります。あなたのプロジェクトを他のユーザーに配布するとき、彼らは通常PythonのコードファイルがPythonのインポーターによって自動的に検出されるような方法でインストールすることを覚えておいてください(つまり、パッケージは通常、Pythonのインストールディレクトリにある
site-packages
ディレクトリにインストールされます) ので、もしあなたが
sys.path
をいじると、そのコードが他のコンピュータで実行されたときに、不必要な、そして有害な影響を与えるかもしれません。開発においては、あえて言うなら
PYTHONPATH
を設定することが、通常は最善の方法だと思います。
しかし、自分のコンピュータで実行するだけのものを使っている場合(あるいは、ウェブアプリのフレームワークで時々あるような、非標準の設定をしている場合)、次のようなことをするのは全く珍しいことではありません。
import sys
from os.path import dirname
sys.path.append(dirname(__file__))
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] Pythonでパスから拡張子なしでファイル名を取得する方法は?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] Pythonスクリプトをコンパイルする(実行しない) [重複]。
-
[解決済み] 関数が受け取るキーワード引数をリストアップできますか?
最新
-
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でのAWS Lambdaのインポートモジュールエラー
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] pyvenv-3.4 は 0 ではない終了ステータス 1 を返しました。
-
[解決済み] virtualenvのどこにカスタムコードを置くか?
-
[解決済み] Python 2 で HEAD HTTP リクエストを送信するには?
-
[解決済み] 2つの日付の間の月数を求める最良の方法
-
[解決済み] Pandasがラベルで選択すると、Seriesを返す場合とDataFrameを返す場合があります。
-
[解決済み] PythonによるCURLの代替