heesub ahn
heesub ahn

Reputation: 27

Uploading Django projects set up within virtual environment on Github

I have just started learning Django, and I'm facing some problems regarding the 'copy' of the projects. I have two computers and I would like to use both computers for my development. When I was learning PHP (at that time I didnt even know how to use Github), all I had to do was set up a webserver on both computers, and upload the whole files through Google Drive (from one computer) and then download it from the other computer.

However, it seems to me that Django is somewhat different since it is a framework and has a lot of setting ups before starting a project (including virtual environment; I am following a Youtube tutorial and it says that I would be better off if I used virtualenv). I thought it wouldn't work just by downloading the whole project folder to the other computer.

Currently, I have uploaded the whole virtual environment folder on Github.

So, to list my questions,

  1. When downloading it on the other computer, should I setup the virtual environment on that computer and then download the folder?...
  2. Is there any way that I can only sync or commit the files that has been changed in the project automatically? (That is, i have to change many files in django projects(views, urls, settings... etc) but it would be hard to remember all the files that i have changed and then seperately commit those ones)

Any help would be appreciated.

Upvotes: 1

Views: 1488

Answers (2)

Sourabh
Sourabh

Reputation: 8482

Edit: Consider using pipenv


I suggest that you also install virtualenvwrapper (here). virtualenvwrapper keeps all files except your project at another location so your project directory contains only your files and you can safely use git add --all.

After its installed, do:

$ mkdir my-project; cd my-project
$ mkvirtualenv my-env-name
$ pip install django <more-good-stuff>
$ pip freeze > requirements.txt
$ git init; git add --all; git commit -m "Initial Commit"
... push to github ...

Now go to other machine, and install virtualenv and virtualenvwrapper

$ git clone <url> my-project; cd my-project 
$ mkvirtualenv my-env-name
$ pip install -r requirements.txt
... continue your work, commit and push push and win at life :D

Upvotes: 3

Martin Massera
Martin Massera

Reputation: 1906

you usually don't want to commit everything blindly. It's better if you use git status to see all the files that you changed and then git add those that you want to commit. Once you've verified that you really want to commit all files, you can simply git add --all (more here). And then you git commit.

And, yes, virtualenv is the way to go. You want to create a virtualenv for your project and have all your dependencies in a requirements.txt file. This will allow to have only your source code and no libraries in your git repo, making it much cleaner. This also can allow you to have a set of verified libraries in production, and if you want to try out a new library you can just install it in your local virtualenv. Or even have two virtualenvs and switch, or whatever, and it does not mess your code repo or other machines' installations.

Upvotes: 0

Related Questions