Synology-Forum.nl

Packages => 3rd party Packages => Overige 3rd party packages => Topic gestart door: harry440 op 25 oktober 2014, 12:12:14

Titel: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 25 oktober 2014, 12:12:14
Mijn DSM heeft een update van Python3 uitgevoerd naar versie 3.4.

Bij uitvoeren script in Python 3 werkt de module 'serial' ineens niet meer.

Geprobeerd Pyserial2-7 opnieuw te installeren, maar komt nu met de foutmelding:

error: invalid Python installation: unable to open /volume1/@appstore/py3k/usr/local/include/python3.4m/pyconfig.h (No such file or directory)

De directory /include/python3.4m bestaat niet eens en ik kan het bestand pyconfig.h nergens ergens anders vinden.

Wat is er dramatisch veranderd in Python 3.4 en hoe kan ik dit oplossen? Heb Pyserial nodig om mijn slimme meter uit te lezen en het script daarvoor moet via Python3 lopen.


Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: Ben(V) op 25 oktober 2014, 12:20:35
Welke versie van Python gebruik je eigenlijk?
Die van de synocommunity of die van Synology?

Serial2-7 draait volgens mij ook onder python2 en die kun je apart installeren.
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 25 oktober 2014, 14:32:47
Geinstalleerde versie via Packagecenter. 3.4.1-0028.

Pyserial draait inderdaad prima in via Python2, maar in Python3 dus niet. Heb Python3 wel nodig om een bepaald script de draaien dat onder Python2 niet wil.
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: Ben(V) op 25 oktober 2014, 16:21:49
Je kunt zonder problemen python 2 en python 3 beiden op je Nas geinstalleerd hebben.
Je moet alleen de juiste aanroep (e.g python2 of python3) gebruiken voor het opstarten van je python script(applicatie).
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 27 oktober 2014, 08:14:11
Wellicht is mijn vraag niet helemaal duidelijk.

Ik heb zowel Python2 als 3 geinstalleerd en dit draait verder goed.

Voor het uitvoeren van het Python script moet ik Python3 gebruiken.

Nu Python3 naar versie 3.4 is geupdate, krijg ik PySerial2-7 niet meer geinstalleerd.

Dus PySerial werkt wel met Python2 maar niet meer met Python3 na de update.

De vraag is dus hoe je Pyserial2-7 werkend krijgt met referentie naar mijn eerste post.
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: Ben(V) op 27 oktober 2014, 10:12:15
Als ik het dus goed begrijp heb je een python script dat alleen onder python 3 draait en daarin wordt PySerial aangeroepen en die wil niet met deze versie van python 3 draaien.

Aan je foutmelding te zien wil python3 zelf niet goed opstarten.
Ik zou python 3 verwijderen en opnieuw installeren.
Eigenlijk zou ik je aanraden python3 van de synocommunity te nemen en niet die van Synology zelf. Die laatste mist nogal eens wat libraries en bij de synocommunity is er actief support.

Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 27 oktober 2014, 10:44:34
Ben(V), bedankt voor de tip. Ik ga dit testen en laat weten wat de uitkomst is.
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: Ben(V) op 27 oktober 2014, 16:32:16
ok succes
Mag ik vragen wat voor hardware je gebruikt ?

Een usb naar serial device? Welk type?
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 27 oktober 2014, 16:33:59
FT232 USB-Serial (UART) IC - Future Technology Devices International, Ltd
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 27 oktober 2014, 20:53:01
Inmiddels Python en Python3 via Synocommunity geinstalleerd. In Package Center staat aangegeven dat beide applicaties draaien, alleen in Putty de volgende meldingen bij uitvoeren Python en Python3, zie afbeelding.

Geen idee wat nu te doen...

Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 29 oktober 2014, 20:31:37
Iemand een idee?
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: Ben(V) op 29 oktober 2014, 21:07:44
Je moet wel het pad opgeven naar waar python staat.
Dus voor python3 is dat:
/volume1/@appstore/python3/bin/python3

Voor python2 is dat:
/volume1/@appstore/python/bin/python2

Er van uit gaande dat je de packages op volume1 hebt geinstalleerd.
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 29 oktober 2014, 21:53:57
Dank. Hoe bedoel je het pad opgeven? Bij elk commando om een script te draaien of ergens 1-malig zodat het programma overal wordt gevonden?
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: Ben(V) op 29 oktober 2014, 22:20:14
Kan beiden.

Je kunt het commando geven:
/volume1/@appstore/python3/bin/python3 /volume1/<directory>/script.py
Of je kunt /volume1/@appstore/python3/bin/ toevoegen aan the path enviroment variable en dan wordt het commando:
python3 /volume1/<directory>/script.py
Hoe je de path variable in linux uitbreid zodat hij ook na een reboot blijft bestaan weet ik niet. Zo ver gaat m'n linux kennis niet maar google kan je vast wel helpen.
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: Birdy op 29 oktober 2014, 22:34:25
Citaat
Hoe je de path variable in linux uitbreid zodat hij ook na een reboot blijft bestaan weet ik niet.
Toevoegen in /etc/profile (system-wide .profile file for ash)
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 29 oktober 2014, 22:40:52
Dank allen. Heb weer heel wat geleerd. Ik kan dus concluderen dat het installeren van Python via Synology deze instellingen zelf aanmaakt, Python via Synocommunity niet.

Ga het proberen!
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: Birdy op 29 oktober 2014, 22:46:07
Ik weet niet of dat ook in DSM5.0 is maar, in 5.1 heb je ook nog een standaard Python  ;) :

DS111> python
Python 2.7.8 (default, Aug 28 2014, 20:19:31)
[GCC 4.6.4] on linux2

Waarvan ook een Beta ter beschikking is:

[attachimg=1]
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 30 oktober 2014, 23:07:12
Het wil allemaal voor geen meter, wou dat de automatische update naar Python 3.4 nooit had plaatsgevonden.



Het compileren van een Python2 naar Python3 script in versie Python3.4 gaat dus fout? 2to3?

Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: Ben(V) op 31 oktober 2014, 10:12:18
Je probeert de windows installer te runnen op je synology dat gaat nooit werken.
Je moet het source package hebben en die zelf installeren.
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 31 oktober 2014, 10:47:43
Maar ik gebruik pyserial-2.7.tar.gz (md5), uitpakken en installeren met commando:

'Python3 setup.py install'.

Dus is niet de Windows installer, wat gaat er dan fout?
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: Ben(V) op 31 oktober 2014, 12:01:40
Geen idee maar ik zie toch duidelijk dat je serialwin32.py probeert te draaien.
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: Ben(V) op 31 oktober 2014, 12:26:21
Je moet die tar zelf uitpakken en ergens neerzetten.
Dan moet je met Putty in die directory gaan staan.
Als je dan een ls commando geeft, moet je daar setup.py zien staan.

Vervolgens geeft je het commando:
Citaat
/volume1/@appstore/python3/bin/python3 setup.py install

PS Zorg er wel voor dat je met putty als root bent ingelogd niet als admin (voor beiden geld hetzelfde password).
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: DrBean op 31 oktober 2014, 17:40:43
Ik heb persoonlijk wat moeite met het uit elkaar houden van wat je nu naast elkaar aan het testen bent en wat er in je screenshots staat (de commando's staan er niet altijd in, geloof ik)
Onderstaand is gedaan met het Python3 package van SynoCommunity. Daarvan weet ik dat het werkt, en daarnaast mist het Synology package wat modules die ik hieronder gebruik.

Eerst zet ik een virtualenv op, in `/volume1/pyserial`. Dit is optioneel, maar wel een goed idee. Je krijgt als het ware een kopie van Python in de /bin folder van je virtualenv, en er is een scheiding met andere Python installaties (het oorspronkelijke Python package blijft wel nodig). Dus:
DS4458> /usr/local/python3/bin/python3 /usr/local/python3/bin/virtualenv /volume1/pyserial/env
Using base prefix '/usr/local/python3'
New python executable in /volume1/pyserial/env/bin/python3
Also creating executable in /volume1/pyserial/env/bin/python
Installing setuptools, pip...done.
Hierna installeer ik pyserial dmv `pip`. Stukken makkelijker dan downloaden van een tar, uitpakken en installeren. We willen wel `pip` in de venv gebruiken, niet de system-wide pip of die van een ander package, vandaar het pad.
Pip en het vorige commando, virtualenv, zitten niet in het Synology Python package, mede daarom gebruik ik het package van SynoCommunity.
DS4458> cd /volume1/pyserial #de venv die we hiervoor maakten, zit dus in de /env dir
DS4458> ./env/bin/pip install pyserial
Downloading/unpacking pyserial
  Downloading pyserial-2.7.tar.gz (122kB): 122kB downloaded
  Running setup.py (path:/volume1/pyserial/env/build/pyserial/setup.py) egg_info for package pyserial
    Detected Python 3, using 2to3

Installing collected packages: pyserial
  Running setup.py install for pyserial
    Skipping implicit fixer: buffer
    Skipping implicit fixer: idioms
    Skipping implicit fixer: set_literal
    Skipping implicit fixer: ws_comma
    changing mode of build/scripts-3.4/miniterm.py from 644 to 755
    Skipping implicit fixer: buffer
    Skipping implicit fixer: idioms
    Skipping implicit fixer: set_literal
    Skipping implicit fixer: ws_comma
    Detected Python 3, using 2to3

    changing mode of /volume1/pyserial/env/bin/miniterm.py to 755
Successfully installed pyserial
Cleaning up...
Nu kunnen we controleren of serial te importeren is. Dit heeft geen praktische waarde overigens, maar het kan helpen met troubleshooten. We openen een Python console (in de virtualenv), daarna importeren we serial:
DS4458> ./env/bin/python
Python 3.4.1 (default, Sep 16 2014, 08:14:00)
[GCC 4.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>>
<ctrl-D> om de console te verlaten. Geen foutmelding, import is dus goed gegaan.
Ook kunnen we miniterm aanroepen:
DS4458> ./env/bin/miniterm.py
--- Available ports:
--- /dev/ttyS0           ttyS0
--- /dev/ttyS1           ttyS1

Als ik het goed begrijp gebruik je weer een ander script om miniterm oid aan te roepen? Dan kun je dat script aanroepen via /volume1/pyserial/env/bin/python <jouw_script.py> (rekening houdende met de virtualenv). Mocht dat niet werken, dan even de foutmelding + naar een online kopie van dat script linken, dat is makkelijker te reproduceren.
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 03 november 2014, 11:54:43
Dank DrBean, ik ga dit uittesten!! Ik laat weten hoe het afloopt!
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 03 november 2014, 20:41:44
DrBean, ik heb getest en HET WERKT! Super bedankt voor de hulp!! Import Serial werkt en ik kan mijn slimme meter weer uitlezen. Ging ik toch de mist in om de PySerial 'zelf' te installeren in plaats van via PIP.

Blij met Linux / Synology experts zoals jullie.  :)

Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: DrBean op 03 november 2014, 21:00:09
Nou, perfect :) Om het verhaal dan helemaal compleet te maken: handmatig downloaden, uitpakken en setup.py draaien werkt ook hoor :P

We maken een nieuwe venv:
DS4458> rm -rf ./env/
DS4458> /usr/local/python3/bin/python3 /usr/local/python3/bin/virtualenv /volume1/pyserial/env
Using base prefix '/usr/local/python3'
New python executable in /volume1/pyserial/env/bin/python3
Also creating executable in /volume1/pyserial/env/bin/python
Installing setuptools, pip...done.

We downloaden pyserial:
DS4458> wget https://pypi.python.org/packages/source/p/pyserial/pyserial-2.7.tar.gz#md5=794
506184df83ef2290de0d18803dd11
--2014-11-03 20:47:46--  https://pypi.python.org/packages/source/p/pyserial/pyserial-2.7.tar.gz
[knip]
2014-11-03 20:47:47 (741 KB/s) - 'pyserial-2.7.tar.gz' saved [122081/122081]

We pakken het uit:
DS4458> tar -xvzf pyserial-2.7.tar.gz
pyserial-2.7/
[knip]
pyserial-2.7/README.txt

We gaan de folder in, je kunt hier niet met subfolders werken, en we draaien setup.py. De `../` is dus om een dir extra omhoog te gaan, je kunt ook het volledige pad kiezen: precies hetzelfde.
DS4458> cd pyserial-2.7/
DS4458> ../env/bin/python setup.py install
Detected Python 3, using 2to3
/usr/local/python3/lib/python3.4/distutils/dist.py:260: UserWarning: Unknown distribution option: 'use_2to3'
  warnings.warn(msg)
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/serial
copying serial/serialcli.py -> build/lib/serial
[knip]
copying build/lib/serial/urlhandler/protocol_hwgrep.py -> /volume1/pyserial/env/lib/python3.4/site-packages/serial/urlhandler
byte-compiling /volume1/pyserial/env/lib/python3.4/site-packages/serial/serialcli.py to serialcli.cpython-34.pyc
[knip]
byte-compiling /volume1/pyserial/env/lib/python3.4/site-packages/serial/urlhandler/protocol_hwgrep.py to protocol_hwgrep.cpython-34.pyc
running install_scripts
copying build/scripts-3.4/miniterm.py -> /volume1/pyserial/env/bin
changing mode of /volume1/pyserial/env/bin/miniterm.py to 755
running install_egg_info
Writing /volume1/pyserial/env/lib/python3.4/site-packages/pyserial-2.7-py3.4.egg-info

We gaan de dir weer uit, en we importeren serial eens:
DS4458> cd ../
DS4458> ./env/bin/python
Python 3.4.1 (default, Sep 16 2014, 08:14:00)
[GCC 4.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>>
Dus dat werkt ook wel.
Titel: Re: Pyserial2-7 werkt niet meer na update Python
Bericht door: harry440 op 03 november 2014, 21:30:08
Jeetje  :lol: Bedankt voor het bewijs en ik heb van beide instructies een document aangemaakt.