Pip en Pestileaks

Ondertussen paar daagjes in de weer geweest met het Pestileaks project. Mijn idee was om het hele project op github lokaal neer te zetten, zodat ik er wat ongestoord mee kan gaan stoeien. Na een eerste snelle probeersel had ik al gauw door dat ik de zaak niet zomaar even kon overzetten. Er moeten tal van python libraries worden geinstalleerd, die ook op de juiste manier met elkaar moeten samenwerken. Eventjes snel op mijn ubuntu systeem de betreffende libraries met apt-get installeren was volstrekt onvoldoende. Ik heb er daarom maar eens een vakantieprojectje van gemaakt:

1. Systeempje bouwen
Ik heb een systeem leeggemaakt en er een kale ubuntu12.04 distro opgezet en geupgrade. Mbv apt-get heb ik alleen python2.7 zelf en python-setuptools geinstalleerd:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python2.7 python2.7-setuptools

Alle overige libraries heb ik geinstalleerd mbv pip.

$ sudo easy_install pip

Ik maak een aparte gebruiker ‘pestileaks’ aan

$sudo adduser pestileaks

Ik haal de pestileaks data van github en pak deze uit op /home/pestileaks

$ wget https://github.com/ivorbosloper/pestileaks/archive/master.zip
$ unzip master.zip
$ mv pestileaks* pestileaks

2. Het gebruik van pip en env
Ik vond hiervoor een mooie tutorial. Env is kennelijk een gereedschap waarmee je voor elk project een aparte python bibliotheek kunt opbouwen waarmee je voorkomt dat het ene project het andere project in de weg gaat zitten.

$ sudo pip install virtualenv
....
wheel installs require setuptools >= 0.8 for dist-info support
.....

En na een google search probeer ik dan maar zo

$ sudo pip install --no-use-wheel virtualenv

Ik maak vervolgens een virtuele omgeving voor user pestileaks. Ik geloof dat je dit het beste kunt doen terwijl je bent ingelogd als de betreffende user (pestileaks in dit geval)

$ which python
/usr/local/bin/python
$ virtualenv /home/pestileaks/env
$ source /home/pestileaks/env/bin/activate
$ which python
/home/pestileaks/env

Ik zat een tijdje te worstelen om mijn libraries in deze nieuwe virtuele omgeving te installeren, omdat ik het probeerde met ‘sudo pip install librarieX’. Dat was een beetje dom, omdat de betreffende libraries netjes zoals gevraagd in de omgeving van root (/usr/local/bin/python2.7) werden geinstalleerd. Dus: geen sudo gebruiken !

De tutorial geeft aan dat ik nu ‘requirements.txt’ moet installeren. Ik kom in /home/pestleaks/env geen ‘requirements.txt’ tegen, maar zie in de pestileaks data wel een requirements.txt staan. In dit document zie ik een lijstje met python libraries staan die kennelijk nodig zijn voor het pestileaks project:

$ pip install /home/pestileaks/pestileaks/doc/requirements.txt
.....
Could not find any downloads that satisfy the requirements requirements.txt
...

Maar als ik de betreffende libraries uit requirements.txt met de hand installeer gaat alles goed zonder foutmeldingen:

$ pip install Django==1.5.5
etc...

3. Configuratie van Django
Ik dacht kom laat ik eens netjes de tutorial doowerken, maar ik kom niet verder dan het eerste opdrachtje. Ik weet nu hoe ik een django project kan opstarten. Dus dat trucje gaat mischien ook wel werken op de pestileaks data:

$ python /home/pestileaks/pestileaks/manage.py runserver
Validating models ...
0 errors found
....
Development server is running at http://127.0.0.1:8000

Ik open een browser en ga naar http://127.0.0.1:8000. Hier zie ik netjes de statische pagina’s van pestileaks gepresenteerd worden. Maar als ik op ‘Data’ klik is er bitter weinig te zien. Ik vermoed dat er nog wat geregeld moet worden met de database van het project. Ik kijk wat rond in de python bestanden en kom daar ‘postgresql_psycopg2’ tegen. Kennelijk word postgres gebruikt en is psycopg2 de schakel tussen postgres en python. Dus zowel postgres client als server moet geinstalleerd worden:

$ sudo apt-get install postgressql postgressql-server-dev

Maar dit levert nog niet veel op. Kennelijk moeten de tabellen nog gevuld worden, maar hoe ? Na veel rondzoeken heb ik het volgende gedaan

* Ik heb in settings.py de permissies van de db ‘pestileaks’ ingevuld
* Ik heb een database pestileaks voor de user pestileaks aangemaakt

$ sudo -u postgres createuser -D -A -P pestileaks
$ sudo -u postgres createdb -O pestileaks pestileaks

* Ik zie dat in de file fabfile.py iets met de db wordt gedaan. Het bestand wordt zover ik kan zien echter nergens aangeroepen en kan ook niet zelfstandig uitgevoerd worden. Ik besluit een aantal commando’s zelf met de hand uit te voeren:

$ ./manage.py syncdb
$ ./manage.py migrate --noinput
$ ./manage.py collectstatic --noinput

Ik krijg nu op de webinterface onder ‘Data’ al wat meer te zien. De twee grote ronde schijven zijn zichtbaar maar respectievelijk geheel zwart en grijs gekleurd. Het lijkt er nog steeds op dat er geen data in de database zitten. Dit wordt bevestigd als ik met de hand in de database ga kijken. De structuur van de tabellen staat er, maar er zitten geen records in. Ik werd getriggerd door het vlaggetje ‘–noinput’ in bovenstaande twee commando’s, maar als ik ze zonder het vlaggetje uitvoer verandert er niks.

Zo, ik ben even uitgetest en uitgedacht. Iemand goede ideeen hoe ik die pestileaks tabellen gevuld krijg ?

Advertisements

2 thoughts on “Pip en Pestileaks

  1. Hoi,

    Het is goed gelukt zie ik wel. Ik zie dat je linux gebruikt, dat schiet lekker op. Python, Django, Virtualenv is even een leercurve, maar virtualenv gebruiken is wel een best-practice. Fabfile komt van fabric (fabfile.org), een handige tool om remote/op verschillende omgevingen te deployen.

    Het is `pip install -r requirements.txt` als je een requirements file gebruikt, vergeet de -r dus niet.

    De data zit nog niet netjes in django fixtures (dan zou het automatisch met syncdb meegaan), maar zou je moeten kunnen installeren met:

    # psql pestileaks < doc/sql/methode.sql
    # psql pestileaks < doc/sql/middel.sql
    # psql pestileaks < doc/sql/teeltdoel.sql

    Let er wel op; al deze datasets moeten we nog goed gaan opzetten.

    Succes!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s