私はPythonをビルドしてインストールするのにYoctoを使い、Ubuntu x86、Raspberry Pi、BeagleBone Black、TI AM57XX EVM(Dev Kit)でpython-twistedを使用しました。 Python-Twistedは、AM57XX Dev Kitを除く前述のすべてのマシンをインポートするのに問題ありません。それは次のエラーを吐く:YoctoがPythonビルドの一部としてモジュールfcntlをビルドする方法
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'
私はボード上のPythonを起動するとfcntlモジュールをインポートしようとすると、確かに欠落しています。
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
パッケージリストは、各マシンで同じです。私は何が欠けていますか?カーネルの構成を変更する必要はありますか?
私の周りグーグルましたが、私はこの記事を見つけた: https://lists.yoctoproject.org/pipermail/yocto/2013-May/013953.html
YoctoからPythonは問題があり、それはfcntlのモジュールが含まれていないように誤って設定されていることを示しているようだ:
>> 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?
Yoctoは、Pythonを構築するときlog.do_packageスクリプトのpython-fcntlのために必要な依存関係に言及している - しかし、彼らは、エラーのように見えるしていません。
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'
だから私はそれがモジュールを構築したと思うが、私のルートファイルシステムにそれをパッケージ化できませんでした。
私はPythonソースをダウンロードし、configureを "help"で実行し、fcntlを探しました。
./configure --help | grep fcntl
ただし、結果はありません。
Yoctoの設定やPythonのレシピで、fcntlをルートファイルシステムにデプロイするにはどうすればよいですか?
'./configure --help | grep fcntl'は結果を出力すべきではありません。あなたは 'cat configure | grep fcntl'と 'cat setup.py | grep fcntl'ですが、どのように関連するのかわかりません。私は_Yocto_についてスクワットを知っていますが、_Python_ビルドログにアクセスできますか?ビルドディレクトリ(_fcntl.so_が存在するかどうかを確認する)はどうですか? – CristiFati