将Django项目从虚拟环境推送到GitHub
我正在一个小的Django项目中使用virtualenv,这个项目需要分享到github上,然后从那里克隆并安装到Apache服务器上。我之前从来没有在使用virtualenv的情况下和github一起工作过。通常,我会在manage.py文件同级别上设置本地的git仓库。但是,在这个级别上还有几个我不太想要的virtualenv目录(比如bin、lib、include等),这些目录和我需要的应用程序、模板目录等混在一起。
那么,在这种情况下,如何创建一个github仓库呢?有没有办法选择性地过滤掉那些virtualenv的内容?
3 个回答
查看一下Github的文档,里面讲了如何忽略文件。简单来说,就是在你的项目里放一个叫做.gitignore
的文件,里面写上你不想让git管理的文件的规则。
在使用虚拟环境的时候,通常的做法是把虚拟环境的文件夹放进你的 .gitignore
文件里。想了解如何使用这个 git 功能,可以点击 这里。
简单来说:你在 .gitignore
文件里写的东西,git 就会忽略它。这个文件 (.gitignore
) 和你的 git 仓库在同一个文件夹里。
下面是一个这样的文件示例,它会忽略任何编译后的源代码文件(.pyc)、压缩文件(.zip, .rar, .tar)、日志文件和数据库文件(.db, .log, .sql),还有虚拟环境的文件(Scripts, Lib, Include)以及整个文件夹(env - 这是我虚拟环境文件夹的名字):
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
*.pyc
# Packages #
############
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.db
*.log
*.sql
*.sqlite
# virtualenv generated files #
##############################
Scripts
Lib
Include
# virtualenv folders #
######################
env
这是我遵循的目录结构 -
/path/to/application/
|-- project
| |-- projectname
| | |-- __init__.py
| | |-- local_settings.py
| | |-- settings.py
| | |-- urls.py
| | `-- wsgi.py
| |-- appone
| | |-- admin.py
| | |-- __init__.py
| | |-- models.py
| | |-- tests.py
| | `-- views.py
| `-- manage.py
`-- venv
|-- bin
|-- include
|-- lib
`-- local
你可以很简单地在一个叫做 project
的文件夹里创建一个 Django 项目,方法是 -
$ django-admin.py startproject projectname project
然后在一个叫做 venv
的文件夹里启动虚拟环境,方法是 -
$ virtualenv venv
接着,你可以在 /project
目录下直接运行 git init
。这样做可以把虚拟环境放在你的 git 仓库之外。
如果你想保持现在的结构,也可以创建一个 .gitignore
文件,并在里面写上 bin
、lib
、include
等等。