2

デフォルトの Python として Python 3.x を使用する Linux ディストリビューションが増えていますが、Yoctoはまだ Python 2.7 を使用しています。これらのディストリビューションで Yocto を使用するにはどうすればよいですか?

4

4 に答える 4

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}

助けてくれてありがとう!

于 2015-02-06T09:34:39.690 に答える
1

ここでの標準的な解決策は、virtualenv を使用して、「python」が python 2 である環境を作成することです。

于 2015-03-12T11:52:17.047 に答える
1

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
于 2017-12-21T15:28:57.773 に答える
0

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 をセットアップで使用することさえできます。

于 2015-02-06T08:09:12.430 に答える