[解決済み] Pythonです。現在実行中のスクリプトからの相対パスで sys.path に追加する最良の方法
2022-08-02 15:12:48
質問
私はスクリプトでいっぱいのディレクトリを持っています (例えば
project/bin
). また、ライブラリは
project/lib
にあり、スクリプトが自動的にそれをロードするようにしたい。これは、私が通常各スクリプトの先頭で使用しているものです。
#!/usr/bin/python
from os.path import dirname, realpath, sep, pardir
import sys
sys.path.append(dirname(realpath(__file__)) + sep + pardir + sep + "lib")
# ... now the real code
import mylib
これはちょっと面倒で、醜くて、すべてのファイルの最初に貼り付けなければなりません。もっといい方法はないでしょうか?
本当に私が望んでいるのは、これと同じくらいスムーズなものです。
#!/usr/bin/python
import sys.path
from os.path import pardir, sep
sys.path.append_relative(pardir + sep + "lib")
import mylib
あるいはさらに良いのは、私のエディタ(あるいはコミットにアクセスできる他の誰か)がクリーンアッププロセスの一環としてimportの順序を変更することを決めても壊れないようなものです。
#!/usr/bin/python --relpath_append ../lib
import mylib
これは、Posix以外のプラットフォームには直接移植できませんが、物事をきれいに保つことができます。
どのように解決するのですか?
各ファイルの編集が不要な場合
-
通常のpythonのライブラリのようにインストールします。
または -
セット
PYTHONPATH
をあなたのlib
または、各ファイルに1行ずつ追加する場合は、先頭にimportステートメントを追加します。
import import_my_lib
保つ
import_my_lib.py
をbinに、そして
import_my_lib
は Python のパスを正しく設定することができます。
lib
に設定することができます。
関連
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] スクリプトを実行しているPythonのバージョンを確認するにはどうしたらいいですか?
-
[解決済み] Python 3で文字列をバイトに変換する最良の方法?
-
[解決済み] Pythonでホームディレクトリを取得するための正しいクロスプラットフォームな方法は何ですか?
-
[解決済み] Pythonで現在のユーザー名を取得するポータブルな方法はありますか?
-
[解決済み] Pythonのunicode文字列のアクセントを除去(正規化)する最良の方法は何ですか?
-
[解決済み] Pythonで現在のスクリプトの名前を取得する
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?
最新
-
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ファイルをインポートするには?
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] 辞書のキーと値を交換するにはどうすればよいですか?
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] virtualenvsはどこに作成するのですか?
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する
-
[解決済み] Django filter queryset __in for *every* item in list