作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有以下设置:
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/
我是一名优秀的程序员,十分优秀!