easy_install-2.7 lxml
ikke
easy_install lxml
Dette er mest et notat til megselv, kanskje jeg husker det til neste gang selv nå.
easy_install-2.7 lxml
ikke
easy_install lxml
Dette er mest et notat til megselv, kanskje jeg husker det til neste gang selv nå.
Jeg krangler tidvis med python på sen server som kjører freeBSD, som jeg leier hos subsys.no. Hovedpoenget med prosjektet er å lære django og python for mer effektiv webutvikling/prototyping. Å lære ny teknologi handler ofte, for min del i alle fall, om å sitte fast før jeg får med meg hvordan ting fungerer. Denne posten inneholder info om hvordan legge til foldere på python-stien, slik at importering med "from module import stuff" fungerer. Grunnen til at jeg blogger dette er at jeg glemmer det mellom hver gang det er nyttig, og derfor fint å ha tilgjengelig på nett, for meg og kanskje deg.
I roten på webhotellet mitt (og ditt) ligger det en usynlig fil som heter .bash_profile. Den kan hete andre ting som .bashrc, men i mitt tilfelle altså .bash_profile. Denne kan redigeres med nano, eller andre terminal-baserte editorer.
$ nano .bash_profile
Legg til en ny sti:
export PYTHONPATH=/home/users/dittbrukernavn/mappen_du_vil_adde:$PYTHONPATH
Lagre (ctrl + o i nano).
Du må logge ut og inn igjen via ssh for at dette skal tre i kraft.
For å teste om ting virket kan du printe ut sys.path'n i python:
$ python Python 2.6.5 (r265:79063, May 21 2010, 00:49:11) [GCC 4.2.1 20070719 [FreeBSD]] on freebsd7 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path
det du får ut på skjermen er da en liste over foldere som er på python-stien:
['', '/usr/local/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg', '/usr/local/lib/python2.6/site-packages/pytz-2010h-py2.6.egg', '/usr/local/lib/python2.6/site-packages/Pygments-1.3.1-py2.6.egg', '/usr/local/lib/python2.6/site-packages/boto-1.9b-py2.6.egg', '/usr/local/lib/python2.6/site-packages/lxml-2.2.4-py2.6-freebsd-7.3-RELEASE-amd64.egg', '/usr/local/lib/python2.6/site-packages/simplejson-2.1.1-py2.6-freebsd-7.3-RELEASE-amd64.egg', '/usr/local/lib/python2.6/site-packages/Genshi-0.6-py2.6.egg', '/usr/local/lib/python2.6/site-packages/flup-1.0.2-py2.6.egg', '/home/users/dittbrukernavn/mappen_du_vil_adde', '/usr/local/lib/python26.zip', '/usr/local/lib/python2.6', '/usr/local/lib/python2.6/plat-freebsd7', '/usr/local/lib/python2.6/lib-tk', '/usr/local/lib/python2.6/lib-old', '/usr/local/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/site-packages', '/usr/local/lib/python2.6/site-packages/PIL']
Hvori den nye forhåpentligvis er å finne.
Jeg har begynt å snuse på django, og snubla raskt over "IndentationErrors". Koden jeg jobber med er fra "komme-i-gang-totorialene" på prosjektets websider, og var ofte "feilfri". Med det mener jeg at koden ser helt lik ut som i eksemplene.
Feilmeldingene på testserveren (http://localhost:8000, etter python manage.py runserver) sier:
...
unexpected indent (admin.py, line 16)
Exception Type: IndentationError
Exception Value: unexpected indent (admin.py, line 16)
...
Problemet er at innrykkene (indent, som lages ved å trykke på tab-tasten, ⇥ på mactastaturet, ↹ på standard tastatur) som kommer med ved å kopiere koden fra tutorialen ikke er "det samme" som det innrykket et trykk på tab-tasten gir. Så lenge alle innrykker laget på samme måte, så skal det visstnok gå bra, men det løser ikke problemet.
Løsningen er å la redigeringsverktøyet lage mye innrykk (soft tabs). Jeg benytter textmate, så her er framgangsmåten for det.

"Soft tabs" gjør at koden ser pen ut, men uten å lage "IndentationErrors".
Som du kan se av bildet har jeg Python Django bundlen installert (dette er nok ikke nødvendig, dog). Til høyre for dette valget vises "Tab Size", som jeg satt til 4. Dette avstanden i et trykk på tab-tasten, målt i mellomrom, tror jeg. Underst i denne dropdown-menyen finnes "Soft Tabs (Spaces)" som gjør at når tab-knappen trykkes inn, så skrives ikke et normal innrykk, men nå 4 mellomrom.
Og så forsvant alle tilfellene av IndentationError etter denne endingen.