デフォルトの Python として Python 3.x を使用する Linux ディストリビューションが増えていますが、Yoctoはまだ Python 2.7 を使用しています。これらのディストリビューションで Yocto を使用するにはどうすればよいですか?
4 に答える
Yocto は常に virtualenv で実行されます。しかし、 python 2 を使用するようにだまして、デフォルトの python を設定し、それを PATH env 変数に含める方法を見つけました。
$ source oe-init-build-env build
$ mkdir build/python-bin
$ ln -s /usr/bin/python2 build/python-bin/python
$ ln -s /usr/bin/python2-config build/python-bin/python-config
$ export PATH=$(pwd)/build/python-bin:${PATH}
助けてくれてありがとう!
ここでの標準的な解決策は、virtualenv を使用して、「python」が python 2 である環境を作成することです。
yocto が作成するホストツールのシンボリック リンクを上書きすることで修正できます。Shan-x からの修正で yocto ビルドを開始できましたが、ビルドが完了しませんでした。
Yocto は、すべてのレシピに対して異なる環境を提供します。一部のレシピ、特に meta-openembedded からは hosttools が必要です。これらのホストツールは、たとえば python です (これは python2 であると予想されます)。次に、このホストツールはbuild/tmp/hosttoolsでシンボリック リンクされ、これが $PATH に追加されます。
python -> /usr/bin/python
これをデフォルトの python2 に変更するには、シンボリックリンクを /usr/bin/python2 を指すように変更するだけです
セットアップ全体:
$ mkdir build/python-bin
$ ln -s /usr/bin/python2 build/python-bin/python
$ ln -s /usr/bin/python2-config build/python-bin/python-config
$ mkdir -p build/tmp/hosttools
$ ln -sf /usr/bin/python2 build/tmp/hosttools/python
自動的に python2 に変更するには、エクスポート $PATH を sources/poky/oe-init-build-envに追加します。これは、他のものがソース化される直前です。
diff --git a/oe-init-build-env b/oe-init-build-env
index e813230a98..c981358577 100755
--- a/oe-init-build-env
+++ b/oe-init-build-env
@@ -47,6 +47,8 @@ if [ -z "$OEROOT" ]; then
fi
unset THIS_SCRIPT
+export PATH=$(pwd)/build/python-bin:${PATH}
+
export OEROOT
. $OEROOT/scripts/oe-buildenv-internal &&
TEMPLATECONF="$TEMPLATECONF" $OEROOT/scripts/oe-setup-builddir || {
次に、環境をソースします。
$ source oe-init-build-env build
Linux ディストリビューションは、Python 3 を使用するようにシバン行を適合させることにより、アプリケーションごとにゆっくりと Python3 に移行します。
コマンドラインで入力すると、CentOS 7、Ubuntu 14.4 LTS、Debian Jessy はすべてデフォルトで Python2.7 になります。python
Yocto がパッケージ マネージャーを使用してインストールされている場合、Linux ディストリビューションで動作するすべてのものに適応し、一般的なシバンド (ロードpython
) または明示的なシバンド (ロードpython2
またはpython2.7
.
Yocto を自分でインストールした場合、使用しているシステムがデフォルトで 3 シリーズの Python になっているために動作しない可能性があります。
#!/usr/bin/env python
に
#!/usr/bin/env python2
python2.7 は今後数年間利用可能になり、必要に応じてインストールできるようになると思います。これらのディストリビューションのいずれかで python3 がデフォルトになったとしても (デフォルトでインストールされていないときに python3 が利用可能だったように)。
ソースから Yocto をインストールする際に考慮すべきことはvirtualenv
、クリーンな環境をセットアップするために実行することです。これは、依存関係によっては多少手間がかかる可能性がありますが、アプリケーションのクリーンな作業環境を保証し、何によっても壊れることはありません。パッケージのシステム更新。これを行うと、Linux ディストリビューションで提供されるものとは異なるバージョンの python2.7.X をセットアップで使用することさえできます。