求段让 vim 自动支持 virtualenv 的代码

2014-09-03 18:18:55 +08:00
 gkiwi
网上大都推荐:https://github.com/jmcantrell/vim-virtualenv
但是不好使~

求大家私货.

osx:10.9.2
vim:7.4.253

没用macvim
3274 次点击
所在节点    Python
14 条回复
xuyuanp
2014-09-03 19:42:54 +08:00
不好使?怎么个不好使,是他说的功能没有,还是达不到你的要求?
你想要怎么个支持法
gkiwi
2014-09-03 20:28:58 +08:00
@xuyuanp

:VirtualEnvActivate spam,激活没效果..

你那边ok么?还需要特殊设置么?我用bundle做的管理
xuyuanp
2014-09-03 20:54:18 +08:00
@gkiwi 额。。。路过,友情帮顶,其实我我用Go。。。
gkiwi
2014-09-03 22:27:40 +08:00
@xuyuanp -_-||
eriale
2014-09-04 07:42:32 +08:00
" Add the virtualenv's site-packages to vim path
if has('python')
py << EOF
import os.path
import sys
import vim
if 'VIRTUAL_ENV' in os.environ:
project_base_dir = os.environ['VIRTUAL_ENV']
version = sys.version_info
sys.path.insert(0, os.path.join(project_base_dir, 'lib', 'python{}.{}'.format(version.major, version.minor), 'site-packages'))
EOF
endif
eriale
2014-09-04 07:47:16 +08:00
我的方法其实没有转到虚拟环境,而是把virtualenv的路径插入到了sys.path,这样至少能查找到虚拟环境的库。
Zuckonit
2014-09-04 09:18:42 +08:00
@eriale 可用, 代码别忘了缩进
gkiwi
2014-09-04 22:14:27 +08:00
@eriale
@Zuckonit

我的仍然还是不好用;我切换到virtualenv后,在vim里面执行!python %打印出sys.path,发现.virtualenv的路径不在里面.

刚刚也参考了https://github.com/lambdalisue/vim-python-virtualenv/blob/master/ftplugin/python.vim

原理跟你的类似.
怀疑是我的自己电脑的某些问题,后面我再查查.

不过还是要感谢@eriale,之前vim插件一点都不晓得,通过你上面的代码这才刚知道这方面,学些了.thx~
eriale
2014-09-04 23:24:36 +08:00
@gkiwi 不客气。你可以在vim的python打印出变量来找找哪里不对。
gkiwi
2014-09-05 00:20:31 +08:00
@eriale :)
Zuckonit
2014-09-05 09:01:20 +08:00
@gkiwi 有这个环境变量乎 VIRTUAL_ENV?
gkiwi
2014-09-05 10:19:51 +08:00
@Zuckonit 有的.后来我想了下,可能这个是(部分)生效的.

我希望vim支持virtualenv的目的是为了,按快捷键运行":!python %" 时候,执行当前代码能够引用到当前的env.但是显然没成功.

看到你的回复,突发奇想,在我的原来py.sh脚本上动态添加env/libs/python2.7/sitepackes/到PYTHONPATH,问题解决;
代码:

https://gist.github.com/a560682f2f2324aa14fc.git
gkiwi
2014-09-05 10:20:32 +08:00
gkiwi
2014-09-05 10:24:02 +08:00
仅osx 10.9.2测试通过

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/131546

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX