次の設定があるとします。
mkdir test && cd test
virtualenv .venv
source .venv/bin/activate
pip install django
mkdir mod1
touch mod1/__init__.py
echo "a = 1" > mod1/mod2.py
それは私に与えます:
test/.venv
test/mod1/__init__.py
test/mod1/mod2.py
この関数をどのように記述しますか:
def get_module(module_name, root_path, virtualenv_path=None)
これが機能するために:
project_root_path = "./test"
project_virtualenv_path = "./test/.venv"
get_module("mod1.mod2", project_root_path, project_virtualenv_path)
get_module("django.contrib.auth", project_root_path, project_virtualenv_path)
./test/.venv
アクティベートしていないとします。
私がこれをしたい理由はgf
、インポートステートメントのpythonファイルに機能を実装するvimプラグインに取り組んでいるためです。virtualenvs もサポートしようとしています。
編集:
また、スクリプトは、sys.path に追加または追加することによって、現在のランタイムを変更しないでください。これはvim pythonバインディングを介してvim内で実行する必要があり、vim pythonランタイムを変更することは良い考えではないと思います。
get_module
モジュールオブジェクト、または私が基本的に探しているモジュールへのパスのいずれかを返すことができます。