V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
gkiwi
V2EX  ›  Python

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

  •  
  •   gkiwi · 2014-09-03 18:18:55 +08:00 · 3334 次点击
    这是一个创建于 3718 天前的主题,其中的信息可能已经有所发展或是发生改变。
    网上大都推荐:https://github.com/jmcantrell/vim-virtualenv
    但是不好使~

    求大家私货.

    osx:10.9.2
    vim:7.4.253

    没用macvim
    14 条回复    2014-09-05 10:24:02 +08:00
    xuyuanp
        1
    xuyuanp  
       2014-09-03 19:42:54 +08:00
    不好使?怎么个不好使,是他说的功能没有,还是达不到你的要求?
    你想要怎么个支持法
    gkiwi
        2
    gkiwi  
    OP
       2014-09-03 20:28:58 +08:00
    @xuyuanp

    :VirtualEnvActivate spam,激活没效果..

    你那边ok么?还需要特殊设置么?我用bundle做的管理
    xuyuanp
        3
    xuyuanp  
       2014-09-03 20:54:18 +08:00
    @gkiwi 额。。。路过,友情帮顶,其实我我用Go。。。
    gkiwi
        4
    gkiwi  
    OP
       2014-09-03 22:27:40 +08:00
    @xuyuanp -_-||
    eriale
        5
    eriale  
       2014-09-04 07:42:32 +08:00   ❤️ 1
    " 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
        6
    eriale  
       2014-09-04 07:47:16 +08:00
    我的方法其实没有转到虚拟环境,而是把virtualenv的路径插入到了sys.path,这样至少能查找到虚拟环境的库。
    Zuckonit
        7
    Zuckonit  
       2014-09-04 09:18:42 +08:00
    @eriale 可用, 代码别忘了缩进
    gkiwi
        8
    gkiwi  
    OP
       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
        9
    eriale  
       2014-09-04 23:24:36 +08:00
    @gkiwi 不客气。你可以在vim的python打印出变量来找找哪里不对。
    gkiwi
        10
    gkiwi  
    OP
       2014-09-05 00:20:31 +08:00
    @eriale :)
    Zuckonit
        11
    Zuckonit  
       2014-09-05 09:01:20 +08:00
    @gkiwi 有这个环境变量乎 VIRTUAL_ENV?
    gkiwi
        12
    gkiwi  
    OP
       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
        13
    gkiwi  
    OP
       2014-09-05 10:20:32 +08:00
    gkiwi
        14
    gkiwi  
    OP
       2014-09-05 10:24:02 +08:00
    仅osx 10.9.2测试通过
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3104 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:14 · PVG 21:14 · LAX 05:14 · JFK 08:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.