On Sun, Jul 20, 2014 at 1:41 AM, Martin Torre Castro <mad...@gmail.com> wrote: > Hello, > > my name is Martin and I'm a computer engineer from Spain. I'm going to start > a new project with a colleague and I decided to use Django because we > searched for free opensource tools and I'm in love with Python. > > We have made a couple of tutorials (the official one and "Tango with > django"). I've also bought the book "Two scoops of Django" for the 1.6 > Django edition. We're starting the project soon as well as we finish the > design, but I'm concerned about setting up the new environment. We're > thinking of using: > > postgresql > Python/Django [ of course ;-) ] > Eclipse/Pydev > Git > jQuery > > I've been reading the Greenfield/Roy book and some web sites and I want to > set up the environment with good practices by using virtualenvwrapper, > virtualenv, pip, the requirements.txt files and so on. > I have made some mix for all this, but I would be grateful if someone could > confirm us if we are on the right way, give us some advice or maybe tell us > where on the internet we can find a good way of doing all this. > > My preview for the whole setting up is next: > > We should start the installations by installing "sudo apt-get install > virtualenvwrapper" . If I understand correctly, this installs virtualenv as > well as an embedded pip. > The virtualenv must be created ("virtualenv env") in the parent directory of > the Eclipse workspace, I suppose. This is one point of confusion to me. I > don't know either if I have to activate this every time I come back for > developing resuming the work from days before. I completely understand that > later from Eclipse I will give the python path inside the virtualenv, but > don't know if must activate the virtualenv every time. > Next step would be to install all the things we need (django, pillow, > psycopg2) using a requirements.txt file. "pip install -r requirements.txt" > We should create the new django project with a python django-admin.py > startproject <project_name> > Now I don't know if we should link the project to an already installed > version of Eclipse or run the "git init" first. I understand that Eclipse > and Git don't need to be installed inside the virtualenv. In fact, I've been > reading and it seems that Eclipse can work OK just by being given the path > inside the virtualenv where the python executable is located. I've also read > that some people used to make different workspaces, but configuring the > paths should be enough > http://stackoverflow.com/questions/1145374/virtualenv-with-eclipse-galileo > > From here I would just upload to github or bitbucket, maybe doing the whole > thing from Eclipse would be easier. But the integration with Eclipse when we > made tangowithdjango tutorial was the difficult point, because there is no > option for importing a django project from Eclipse (Kepler version last > time). We found easier to create the project from Eclipse, but we were not > using a virtualenv for the tutorial. > > I haven't used virtualenv before, so it's our second main obstacle, but I > expect it will be easy when we get used to it (^_^) . > > Please could someone help with some piece of advice, pros and cons of every > option. Just don't want to do something now I will regret in future. > > Thank you veeery much in advance. > > PS: Some links visited: > http://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/ > http://www.tangowithdjango.com/book/chapters/setup.html > https://virtualenv.pypa.io/en/latest/virtualenv.html >
Hi Martin Everything you've said seems on the right path. For your couple of queries: You need to activate the virtualenv each time you want to run python within that environment. You simplify this by putting the path to the environment in to Eclipse as this also 'activates' the environment, so that every time you run something through Eclipse you do not need to first activate the environment. Typically, you would need to activate the environment to do things like run your project from the command line, or install python packages in to the environment. Another useful technique I use is to have a "bootstrap" script, a simple shell script that installs a virtualenv if it does not already exist, activates that environment; and then installs or upgrades all the packages listed in requirements.txt. This script can then be run whenever to ensure the environment is up to date and correct. #!/bin/sh if [ ! -d env ]; then virtualenv env fi ln -sf ./env/bin/activate . ./activate pip install --upgrade -r requirements.txt Give your projects differently named environments - don't call them all 'env', or you will inevitably install something in the wrong env. When writing your requirements file, you can track security releases of libraries by specifying like this: django>1.6<1.7 This would install the latest security release in the 1.6 line of django, and every time you re-run bootstrap, it will install any newer 1.6 security release of django, but will not auto-install the 1.7 version (which has plenty of API changes and could break your site). You should still upgrade your libraries, but on your terms! Hope that helps! Cheers Tom -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAFHbX1%2BnXGDKpue-AA%3Drv6x-GHaFthQeOTj24iDyZePJ%3D3fuBA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.