1. ホーム
  2. python

[解決済み] 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 に設定することができます。