我目前已经以一种完全正确的方式设置了 git 和 virtualenv
满足我的需求,到目前为止,还没有造成任何问题。不过我知道
我的设置是非标准的,我想知道是否有人更熟悉 virtualenv
内部结构可以指出是否以及哪里可能出错。
My setup
我的 virtualenv 位于我的 git 存储库中,但 git 设置为忽略bin
and include
目录和所有内容lib
except为了site-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-*
通过这种安排,我以及其他负责项目签出的人都可以正常使用 virtualenv 和 pip,但具有以下优点:
如果任何人更新或安装软件包并推送他们的更改,那么提取这些更改的任何其他人都会自动获取更新:他们不需要注意到requirements.txt
文件已更改或执行任何操作post-receive
钩魔法。
没有网络依赖性:使应用程序运行的所有代码都位于 git 存储库中。
我知道这只适用于纯 Python 包,但这就是我目前所关心的。
有谁知道我应该注意这种方法的任何其他问题吗?
这是个有趣的问题。我认为其他两个答案(到目前为止)提出了很好的具体观点。显然,您已经仔细考虑了这一点并得出了您喜欢的解决方案,但我要指出的是,virtualenv 用户之间似乎确实存在哲学分歧。
我猜你属于其中一个阵营,他们认为本地 VE 是项目的一部分(即它应该处于版本控制之下)。另一种观点认为,VE 本质上应该被视为开发工件——requirements.txt 应该是项目存储库的一部分,但您应该能够根据需要删除并重新创建 VE。
我之所以提到这一点,是因为当我第一次看到这种区别时,它帮助塑造了我对 virtualenv 的想法。 (我属于第二个阵营,FWIW,因为它对我来说似乎更简单、更干净,但这并不是说第一个阵营对于您的特定项目来说是错误的。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)