gpt4 book ai didi

python - 如何在不激活所述 virtualenv 的情况下在 virtualenv 中找到模块?

转载 作者:行者123 更新时间:2023-11-28 16:48:15 29 4
gpt4 key购买 nike

假设我有以下设置:

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 的 vim 插件。 python 文件中 import 语句的功能。我也在尝试支持 virtualenvs。

编辑:

此外,脚本不应通过添加或附加到 sys.path 来更改当前运行时。这应该通过 vim python 绑定(bind)在 vim 中运行,我认为改变 vim python 运行时不是一个好主意。

get_module可以返回一个模块对象,或者模块的路径,这正是我要寻找的。

最佳答案

您可以在 python 路径上添加您的 virtualenv,如:

import site 
site.addsitedir('/home/user/.virtualenvs/myapp1/lib/python2.7/site-packages')

然后 import 就可以了

关于python - 如何在不激活所述 virtualenv 的情况下在 virtualenv 中找到模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11471566/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com