良い一日、
私は学生です。少しお時間をいただきたいと思います。USBポートを介してボード名Arduino Yunに接続されたバーコードリーダーに取り組んでいます。このボードは、Atheros AR9331 という名前のマイクロプロセッサを使用して、OpenWrt から派生した組み込み Linux のバージョンを実行します。
Python Evdev バインディング (python-evdev.readthedocs.org/en/latest/) をこのタイプの MIPS マイクロアーキテクチャで実行できるようにするには、何が必要ですか? 現時点では、Ubuntu と ArchLinux のみに対応しています。クロスコンパイルが必要になるか、このLinux内で特定のCコンパイラが使用されていることを示していると推測しています。
OpenWrt でサポートされている現在の python バージョンは 2.7.3 です。PC で C コードをコンパイルすると、結果の実行可能ファイルはこのタイプのアーキテクチャでのみ実行されます。そのコンパイルされたプログラムをマイクロプロセッサ内で使用すると、機能しません。PCのubuntu内でこのバインディングを問題なく使用しました。setuptools の以前のインストールで、python setup.py install の指示に従いましたが、問題なく動作しました。
しかし、OpenWrt に関しては、そうではありませんでした。
私が使用している Python スクリプトでは、デバイスからデータにアクセスするために、コードの最初の行にこのライブラリが必要です (キーボードの /dev/input/event0 のように機能します)。
#!/usr/bin/env python
from evdev import InputDevice, ecodes, list_devices
from select import select
ライブラリ全体をarduino内にコピーし、同じフォルダー内でスクリプトを実行するという提案を見てきました。しかし、evdev モジュールには MIPS ではなく PC のアーキテクチャで作成されたファイルがあるため、これは機能しません。
では、エラーに対して表示されるメッセージは何ですか? Openwrt で実行python setup.py install
して evdev バインディングをインストールしようとすると、画面に次のように表示されます。
File "setup.py", line 10, in <module>
from setuptools.command.develop import develop
ImportError: No module named setuptools.command.develop
ここから、前述のモジュールが必要であることは明らかです。そこで、このスクリプト (pypi.python.org/pypi/setuptools) でインストールしようとしました:
python ez_setup.py
そして出力はこれを示します:
Downloading https://pypi.python.org/packages/source/s/setuptools/setuptools-11.3.1.zip
Traceback (most recent call last):
File "ez_setup.py", line 332, in <module>
sys.exit(main())
File "ez_setup.py", line 327, in main
downloader_factory=options.downloader_factory,
File "ez_setup.py", line 287, in download_setuptools
downloader(url, saveto)
File "ez_setup.py", line 209, in download_file_curl
_clean_check(cmd, target)
File "ez_setup.py", line 169, in _clean_check
subprocess.check_call(cmd)
File "/usr/lib/python2.7/subprocess.py", line 511, in check_call
raise CalledProcessError(retcode 、cmd)
subprocess.CalledProcessError: Command '['curl',
' https://pypi.python.org/packages/source/s/setuptools/setuptools-11.3.1.zip '、'--silent'、'--output'、'/mnt/sda1/evdev -0.4.6/setuptools-11.3.1.zip']' がゼロ以外の終了ステータス 60 を返しました
この出力は、 pypi が OpenWrt の python 2.7.3 には存在せず、新しいバージョンと他のアーキテクチャにのみ存在するという事実によるものだと思います。Evedv バインディングは、物事をより簡単かつ標準にするために setuptools モジュールを必要としていますが、バインディングがターゲット アーキテクチャでサポートされていない場合、とにかくそれを使用できるようにするために何が必要ですか?
御時間ありがとうございます、