2017-08-15 7 views
3

Ich verwendete Yocto zum Erstellen und Installieren von Python und Python-verdreht auf Ubuntu x86, Raspberry Pi, BeagleBone Black und einem TI AM57XX EVM (Dev Kit). Python-Twisted hat kein Problem damit, alle oben genannten Maschinen zu importieren, mit Ausnahme des AM57XX Dev Kits. Es spuckt die folgende Fehlermeldung aus:Wie man Yocto baut Modul fcntl als Teil von Python Build

Python 2.7.11 (default, Aug 7 2017, 12:07:27) 
[GCC 5.3.1 20160113] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from txdbus import client,error 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/site-packages/txdbus/client.py", line 11, in <module> 
    from twisted.internet import defer, reactor 
    File "/usr/lib/python2.7/site-packages/twisted/internet/reactor.py", line 39, in <module> 
    File "/usr/lib/python2.7/site-packages/twisted/internet/epollreactor.py", line 405, in install 
    File "/usr/lib/python2.7/site-packages/twisted/internet/epollreactor.py", line 235, in __init__ 
    File "/usr/lib/python2.7/site-packages/twisted/internet/base.py", line 498, in __init__ 
    File "/usr/lib/python2.7/site-packages/twisted/internet/posixbase.py", line 289, in installWaker 
    File "/usr/lib/python2.7/site-packages/twisted/internet/posixbase.py", line 139, in __init__ 
    File "/usr/lib/python2.7/site-packages/twisted/internet/fdesc.py", line 25, in setNonBlocking 
AttributeError: 'NoneType' object has no attribute 'fcntl' 

Wenn ich Python auf dem Brett starten und versuchen, den fcntl Modul zu importieren, wird es in der Tat fehlt:

Python 2.7.11 (default, Aug 7 2017, 12:07:27) 
[GCC 5.3.1 20160113] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 
>>> import fcntl 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named fcntl 

Die Paketlisten auf jedem Rechner gleich sind . Was vermisse ich? Muss der Kernel anders konfiguriert werden?

Während ich googeln um, fand ich diesen Beitrag: https://lists.yoctoproject.org/pipermail/yocto/2013-May/013953.html

Es scheint falsch konfiguriert zu zeigen, dass Python von Yocto ein Problem aufgetreten ist und ist so, dass es nicht das Fcntl Modul enthält:

>> ImportError: No module named fcntl 
>> ======== 
>> 
>> So it looks like the Python included with the SDK is crippled or mis-configured: 
> 
> Yeah, the Python we build is split up massively, so clearly the SDK is 
> missing the packages that are needed to run bitbake. But as I said, 
> using our SDK to build is over-complicating things as Ubuntu should 
> work fine. What problems were you seeing? 

Wenn Yocto Python baut das log.do_package Skript erwähnt für python-fcntl erforderlichen Abhängigkeiten - aber sie scheinen nicht wie Fehler:

log.do_package:DEBUG: runstrip: 'arm-linux-gnueabihf-strip' --remove-section=.comment --remove-section=.note --strip-unneeded '/home/me/am57xx/build/tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/python/2.7.11-r1/package/usr/lib/python2.7/lib-dynload/fcntl.so' 
log.do_package:DEBUG: LIBNAMES: pkg python-fcntl libs 0 bins 0 sonames [] 
log.do_package:DEBUG: calculating shlib provides for python-fcntl 
log.do_package:DEBUG: LIBNAMES: pkg python-fcntl sonames [] 
log.do_package:DEBUG: calculating shlib requirements for python-fcntl 
log.do_package:DEBUG: python-fcntl: Dependency libpython2.7.so.1.0 requires package libpython2 (used by files: /home/me/am57xx/build/tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/python/2.7.11-r1/packages-split/python-fcntl/usr/lib/python2.7/lib-dynload/fcntl.so) 
log.do_package:DEBUG: python-fcntl: Dependency libc.so.6 requires package external-linaro-toolchain (used by files: /home/me/am57xx/build/tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/python/2.7.11-r1/packages-split/python-fcntl/usr/lib/python2.7/lib-dynload/fcntl.so) 
log.do_package.17147:DEBUG: runstrip: 'arm-linux-gnueabihf-strip' --remove-section=.comment --remove-section=.note --strip-unneeded '/home/me/am57xx/build/tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/python/2.7.11-r1/package/usr/lib/python2.7/lib-dynload/fcntl.so' 
log.do_package.17147:DEBUG: LIBNAMES: pkg python-fcntl libs 0 bins 0 sonames [] 
log.do_package.17147:DEBUG: calculating shlib provides for python-fcntl 
log.do_package.17147:DEBUG: LIBNAMES: pkg python-fcntl sonames [] 
log.do_package.17147:DEBUG: calculating shlib requirements for python-fcntl 
log.do_package.17147:DEBUG: python-fcntl: Dependency libpython2.7.so.1.0 requires package libpython2 (used by files: /home/me/am57xx/build/tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/python/2.7.11-r1/packages-split/python-fcntl/usr/lib/python2.7/lib-dynload/fcntl.so) 
log.do_package.17147:DEBUG: python-fcntl: Dependency libc.so.6 requires package external-linaro-toolchain (used by files: /home/me/am57xx/build/tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/python/2.7.11-r1/packages-split/python-fcntl/usr/lib/python2.7/lib-dynload/fcntl.so) 
log.do_populate_sysroot:DEBUG: runstrip: 'arm-linux-gnueabihf-strip' --remove-section=.comment --remove-section=.note --strip-unneeded '/home/me/am57xx/build/tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/python/2.7.11-r1/sysroot-destdir/usr/lib/python2.7/lib-dynload/fcntl.so' 
log.do_populate_sysroot.17148:DEBUG: runstrip: 'arm-linux-gnueabihf-strip' --remove-section=.comment --remove-section=.note --strip-unneeded '/home/me/am57xx/build/tmp-external-linaro-toolchain/work/armv7ahf-neon-linux-gnueabi/python/2.7.11-r1/sysroot-destdir/usr/lib/python2.7/lib-dynload/fcntl.so' 

Also ich denke, es hat das Modul gebaut, aber konnte es nicht in mein Root File System verpacken.

Ich habe die Python-Quelle heruntergeladen und mit "Hilfe" konfigurieren und suchte nach fcntl.

./configure --help | grep fcntl 

Es gibt jedoch keine Treffer!

Was kann ich tun, um meine Yocto-Konfiguration oder Python-Rezept fcntl im Root-Dateisystem bereitgestellt zu haben?

+0

'./configure --help | grep fcntl' sollte keine Ergebnisse liefern. Du könntest 'cat configure | grep fcntl' und 'cat setup.py | grep fcntl', aber ich weiß nicht, wie relevant es wäre. Ich weiß über _Yocto_ hocken, aber haben Sie Zugriff auf die _Python_ Build-Protokolle? Was ist mit dem Build-Verzeichnis (um zu überprüfen, ob _fcntl.so_ vorhanden ist)? – CristiFati

Antwort

0

Verwenden Sie das neueste Rezept von Yocto, um das neueste Python 2.7 zu erstellen.