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
KyL
V2EX  ›  Python

大家是如何在 virtualenv 下使用 git 的呢

  •  
  •   KyL · 2015-02-08 20:47:58 +08:00 · 7049 次点击
    这是一个创建于 3574 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前刚开始写一个python项目,希望用virtualenv来实现环境隔离。这样的话,在项目目录下就会有大量的第三方库文件。大家在用git管理项目的时候,该如何处理呢?

    我想到了三个解决方法:

    • 将这些依赖库也add到git里面(貌似不太合理)
    • .gitignore忽略掉/venv目录
    • 用venv建立一个大的目录,然后在下面建立项目子目录,git只trace这个子目录

    我在这方面没什么经验,各位有什么经验可以分享吗?谢谢。

    14 条回复    2015-03-03 00:11:04 +08:00
    fangpeishi
        1
    fangpeishi  
       2015-02-08 20:52:29 +08:00   ❤️ 1
    我的个人小项目是用.gitignore忽略掉/venv目录,然后freeze出一个requires文件供其他其他环境下使用。
    mxi1
        2
    mxi1  
       2015-02-08 20:54:45 +08:00 via iPhone
    virtualenv目录可以放在任意地方,所以你不用将virtualenv目录跟你的项目文件混在一起的
    crazyxin1988
        3
    crazyxin1988  
       2015-02-08 20:55:36 +08:00
    .gitignore忽略掉
    开发的时候 我没用virtualenv
    部署的时候才用~
    banbanchs
        4
    banbanchs  
       2015-02-08 20:56:55 +08:00
    用virtualenvwrapper,比较方便,库文件都放在~/.virtualenvs下
    Melodic
        5
    Melodic  
       2015-02-08 22:58:09 +08:00
    顶楼上吧,也是从一开始就用virtualenvwrapper的。lsvirtualenv mkvirtualenv之类的,也很方便
    ratazzi
        6
    ratazzi  
       2015-02-08 23:51:29 +08:00
    echo * > /path/to/virtualenv/.gitignore 即可,项目的 .gitignore 不用改,依赖都用 pip install -r requirements.txt
    zhouquanbest
        7
    zhouquanbest  
       2015-02-09 00:21:31 +08:00
    我在 virtualenv 的目录下建了一个 source 目录
    代码丢里面就完事了
    taobeier
        8
    taobeier  
       2015-02-09 01:25:38 +08:00
    用virtualenvwrapper 或者gitignore 忽略掉都可以
    iewgnaw
        9
    iewgnaw  
       2015-02-09 10:36:55 +08:00
    virtualenvwrapper 从没遇到过这问题
    hbin
        10
    hbin  
       2015-02-09 11:21:01 +08:00
    我用 pyenv-virtualenv
    dagger
        11
    dagger  
       2015-02-09 17:22:15 +08:00
    楼主,如果没猜错你的想法的话,你想保存的对象是
    - 项目代码
    - 用到的包或者直接就是包的名字、版本(而不是搭好的virtualenv环境本身)

    而最终目的是
    1. 记录使用到的包
    2. 方便部署

    而你现在的方案其实这两个目的都难以达到。直接保存venv下已经安装的包的结果就是你自己看目录树都看的眼花缭乱。部署的话,直接把本地安装的包搬上去说不定会有问题。正规的做法使用puppet或者ansible之类的部署工具,用git保存部署脚本,哪怕部署在本地也适合这样做。简单点的话,存个requirements.txt也比直接存包的文件来的合适
    KyL
        12
    KyL  
    OP
       2015-02-09 21:08:25 +08:00
    看了大家的分享的个人经验,大概知道该怎么做了。谢谢。
    guoqiao
        13
    guoqiao  
       2015-02-11 17:00:25 +08:00
    用virtualenvwrapper可以完美解决这个烦恼, 所有虚拟环境统一管理, 和代码分离.
    在任意目录 workon xxx 就能激活 xxx 虚拟环境, 并可以在激活后自动 cd 到项目所在目录, 非常方便.
    tolerious
        14
    tolerious  
       2015-03-03 00:11:04 +08:00 via iPhone
    一般用一楼的方法,写一个requirement 文件,然后.gitignore 忽略env文件
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 20:06 · PVG 04:06 · LAX 12:06 · JFK 15:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.