[Python] ctypes importare libreria
Massimiliano Rosi
massimiliano.rosi a gmail.com
Mar 4 Lug 2017 13:25:54 CEST
Ciao,
ho fatto una verifica con LD_DEBUG=files e lanciato il comando
PYTHON2: /mnt/nand/python2.7/bin/python -c "import ctypes as c; libpack =
c.CDLL('/mnt/nor/libpack.so', mode=c.RTLD_GLOBAL)"
PYTHON3: /mnt/nand/python3.6/bin/python -c "import ctypes as c; libpack =
c.CDLL('/mnt/nor/libpack.so', mode=c.RTLD_GLOBAL)"
e le differenze sono su 3 librerie che in python3 non vengono caricate,
come da dettaglio seguente (output del comando con python 2.7):
[...]
24305: file=libssl.so.1.0.0 [0]; needed by
/mnt/nand/python2.7/bin/python [0]
24305: file=libssl.so.1.0.0 [0]; generating link map
24305: dynamic: 0x400f1980 base: 0x400a3000 size: 0x00051d6c
24305: entry: 0x400b1138 phdr: 0x400a3034 phnum: 5
24305:
24305:
24305: file=libcrypto.so.1.0.0 [0]; needed by
/mnt/nand/python2.7/bin/python [0]
24305: file=libcrypto.so.1.0.0 [0]; generating link map
24305: dynamic: 0x40344378 base: 0x401f6000 size: 0x0015774c
24305: entry: 0x40230b4c phdr: 0x401f6034 phnum: 5
24305:
24305:
24305: file=libz.so.1 [0]; needed by /mnt/nand/python2.7/bin/python
[0]
24305: file=libz.so.1 [0]; generating link map
24305: dynamic: 0x4036b4e0 base: 0x4034e000 size: 0x0001d6fc
24305: entry: 0x4034f790 phdr: 0x4034e034 phnum: 5
[...]
e quindi con LD_DEBUG=symbols ho verificato che proprio una di queste
contiene il symbol inflateEnd che genera l'errore:
python2
[...]
24749: symbol=syslog; lookup in file=/lib/libc.so.6 [0]
24749: symbol=inflateEnd; lookup in
file=/mnt/nand/python2.7/bin/python [0]
24749: symbol=inflateEnd; lookup in file=/lib/libpthread.so.0 [0]
24749: symbol=inflateEnd; lookup in file=/lib/libdl.so.2 [0]
24749: symbol=inflateEnd; lookup in file=/lib/libutil.so.1 [0]
24749: symbol=inflateEnd; lookup in file=/lib/libssl.so.1.0.0 [0]
24749: symbol=inflateEnd; lookup in file=/lib/libcrypto.so.1.0.0 [0]
24749: symbol=inflateEnd; lookup in file=/lib/libz.so.1 [0]
24749: symbol=__gmon_start__; lookup in
file=/mnt/nand/python2.7/bin/python [0]
24749: symbol=__gmon_start__; lookup in file=/lib/libpthread.so.0 [0]
[...]
python3
[...]
24638: symbol=syslog; lookup in file=/lib/libc.so.6 [0]
24638: symbol=inflateEnd; lookup in
file=/mnt/nand/python3.6/bin/python [0]
24638: symbol=inflateEnd; lookup in file=/lib/libpthread.so.0 [0]
24638: symbol=inflateEnd; lookup in file=/lib/libdl.so.2 [0]
24638: symbol=inflateEnd; lookup in file=/lib/libutil.so.1 [0]
24638: symbol=inflateEnd; lookup in file=/lib/librt.so.1 [0]
24638: symbol=inflateEnd; lookup in file=/lib/libm.so.6 [0]
24638: symbol=inflateEnd; lookup in file=/lib/libgcc_s.so.1 [0]
24638: symbol=inflateEnd; lookup in file=/lib/libc.so.6 [0]
24638: symbol=inflateEnd; lookup in file=/lib/ld-linux.so.3 [0]
24638: symbol=inflateEnd; lookup in file=/mnt/nor/libpack.so [0]
24638: symbol=inflateEnd; lookup in file=/lib/libgcc_s.so.1 [0]
24638: symbol=inflateEnd; lookup in file=/lib/libc.so.6 [0]
24638: symbol=inflateEnd; lookup in file=/lib/ld-linux.so.3 [0]
24638: /mnt/nor/libpack.so: error: symbol lookup error: undefined
symbol: inflateEnd (fatal)
24638: symbol=__dcgettext; lookup in
file=/mnt/nand/python3.6/bin/python [0]
24638: symbol=__dcgettext; lookup in file=/lib/libpthread.so.0 [0]
[...]
Ora che è più chiaro il motivo dell'errore, avrei bisogno ancora di un
aiuto per capire come risolvere il problema...
Grazie!
Ciao.
M.
Il giorno 4 luglio 2017 09:47, Gian Mario Tagliaretti <
g.tagliaretti a gmail.com> ha scritto:
> 2017-07-04 9:32 GMT+02:00 Massimiliano Rosi <massimiliano.rosi a gmail.com>:
>
> > Sono parallele ma non di sistema, perché sono state installate
> > successivamente compilando dai sorgenti
>
> > Entrambi sono stati installati in cartelle separate e i percorsi sono:
> >
> > python2: /mnt/nand/python2.7/bin
> > python3: /mnt/nand/python3.6/bin
>
> purtroppo da qua è difficile, per qualche ragione python3 non risolve
> il link, indaga su cosa viene aperto da ciascuno dei comandi:
>
> export LD_DEBUG=files
>
> e poi esegui l'import da python2 e python3 e cerca le differenze di
> comportamento, preparati ad un output..ehm... piuttosto verboso.
>
> Ciao
> --
> Gian Mario Tagliaretti
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
--
*"A parte l'uomo, tutti gli animali sanno che lo scopo principale della
vita è godersela"*
*Samuel Butler*
--
*rosi::LAB di Ro**si Massimiliano*
Mobile: +39 328.3065575
Fax: +39 178.2280639
E-mail: massimiliano.rosi a gmail.com
Pec: massimiliano.rosi a pec.it
Skype: papipano
LinkedIn: Massimiliano Rosi
----------------
"Avvertenze ai sensi del D.Lgs.196 del 30/06/2003
Le informazioni contenute in questo messaggio di posta elettronica
e/o files allegati, sono da considerarsi strettamente riservati.
Il loro utilizzo è consentito esclusivamente al destinatario del
messaggio, per le finalità indicate nello stesso.
Costituisce violazione ai principi dettati dal D.Lgs. 196/2003:
trattenere il messaggio stesso, divulgarlo anche in parte, distribuirlo
ad altri soggetti, copiarlo o utilizzarlo per finalità diverse.
Qualora riceveste questo messaggio senza esserne il destinatario
Vi preghiamo cortesemente di darcene notizia via e-mail
e di procedere alla distruzione del messaggio stesso,
cancellandolo dal Vostro sistema.
Grazie."
----------------
Nota: per proteggere il computer dai virus, le applicazioni di posta
elettronica impediscono l'invio o la ricezione di alcuni tipi di
allegati. Per determinare la modalità di gestione degli allegati,
controllare le impostazioni di protezione della posta elettronica.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20170704/22af1451/attachment.html>
Maggiori informazioni sulla lista
Python