使用GIT来管理Virtualenv状态:这会导致问题吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

我目前有GIT和虚拟环境,其设置方式完全符合我的需要,到目前为止,还没有引起任何问题。然而,我知道我的设置是不标准的,我想知道是否有任何人更熟悉Virtualenv的内部结构,可以指出它是否和哪里出错。

我的设置

我的Virtualenv位于我的git存储库中,但是git被设置为忽略bininclude目录和所有libsite-packages目录。

更确切地说,我的.gitignore文件如下所示:

*.pyc

# Ignore all the virtualenv stuff except the actual packages
# themselves
/bin
/include
/lib/python*/*
!/lib/python*/site-packages

# Ignore easyinstall and setuptools
/lib/python*/site-packages/easy-install.pth
/lib/python*/site-packages/setuptools.pth
/lib/python*/site-packages/setuptools-*
/lib/python*/site-packages/pip-*

有了这种安排,i--以及其他任何参与项目签出的人--都可以正常地使用virtualenv和pip,但有以下优点:

  1. 如果任何人更新或安装包并推送其更改,其他任何人都会自动获得更新:他们不需要注意到requirements.txt文件已更改或执行任何post-receive钩子魔法。
  2. 没有网络依赖关系:使应用程序工作的所有代码都在git存储库中。

我知道这只适用于纯Python包,但这是我目前所关心的所有问题。

有没有人知道我应该注意到的其他问题?

提问于
用户回答回答于

如果你有-e在你的requirements.txt-换句话说,如果有任何可编辑的依赖项,请使用git版本控制系统很可能会在src目录已提交。如果你只是加上/src .gitignore这样就可以避免这个问题,但是通常安装只是在site-packages所以你需要它!

用户回答回答于

这是一个有趣的问题。我认为其他两个答案(到目前为止)提出了很好的具体要点。显然,已经考虑过这一点,并且已经找到了喜欢的解决方案,但是我要指出的是,在虚拟用户之间似乎存在着哲学上的分歧。

我猜你属于一个阵营,认为当地的VE是项目的一部分(也就是说,它应该在版本控制之下)。另一个人认为VE应该被视为一个开发工件-需求,txt应该是项目回购的一部分,但是你应该能够吹走,并根据需要重新创建VE。

我之所以提到这一点,是因为当我第一次看到这一区别时,它帮助我塑造了对虚拟的思考。(我在第二阵营,FWIW,因为在我看来,这似乎更简单、更干净,但这并不是说,在第一个阵营是错误的,你的特定项目。)

扫码关注云+社区