将Django项目从虚拟环境推送到GitHub

2 投票
3 回答
2934 浏览
提问于 2025-04-17 22:42

我正在一个小的Django项目中使用virtualenv,这个项目需要分享到github上,然后从那里克隆并安装到Apache服务器上。我之前从来没有在使用virtualenv的情况下和github一起工作过。通常,我会在manage.py文件同级别上设置本地的git仓库。但是,在这个级别上还有几个我不太想要的virtualenv目录(比如bin、lib、include等),这些目录和我需要的应用程序、模板目录等混在一起。

那么,在这种情况下,如何创建一个github仓库呢?有没有办法选择性地过滤掉那些virtualenv的内容?

3 个回答

0

查看一下Github的文档,里面讲了如何忽略文件。简单来说,就是在你的项目里放一个叫做.gitignore的文件,里面写上你不想让git管理的文件的规则。

1

在使用虚拟环境的时候,通常的做法是把虚拟环境的文件夹放进你的 .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
6

这是我遵循的目录结构 -

/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 文件,并在里面写上 binlibinclude 等等。

撰写回答