我目前有一个完全符合我需要的方式设置git和virtualenv,到目前为止,没有造成任何问题.但是我知道我的设置是非标准的,我想知道是否有人更熟悉virtualenv的内部结构可以指出它是否以及可能出错的地方.
我的virtualenv是我的git仓库内,但混帐设置忽略bin和include目录,一切都在lib ,除了在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-*
Run Code Online (Sandbox Code Playgroud)
通过这种安排,我 - 以及其他任何从事项目结账工作的人 - 可以正常使用virtualenv和pip但具有以下优势:
如果有人更新或安装软件包并推送他们的更改,那么任何其他提取这些更改的人都会自动获得更新:他们不需要注意requirements.txt文件已更改或执行任何post-receive钩子魔法.
没有网络依赖:使应用程序工作的所有代码都存在于git存储库中.
我知道这只适用于纯Python包,但这就是我现在所关注的全部内容.
有谁知道我应该注意这种方法的任何其他问题?
对于可能首先django应用程序,我使用以下过程来创建应用程序.
$ virtualenv --no-site-packages django-env
$ source django-env/bin/activate
(django-env)$ pip install django
(django-env)$ django-admin.py startproject myproject
Run Code Online (Sandbox Code Playgroud)
现在我有两个文件夹
django-env
myproject
Run Code Online (Sandbox Code Playgroud)
我需要包含django-env在git repo(git init)中,还是仅包含myproject.部署时,如何处理依赖项.