越来越多的Linux发行版使用Python 3.x作为默认的Python,但Yocto仍然使用Python 2.7。 如何使用Yocto与分布的呢?
Answer 1:
Yocto始终运行在virtualenv中。 但我已经找到一种方法来欺骗它使用Python 3:
$ 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}
感谢你的帮助 !
Answer 2:
这里的典型解决方案是使用的virtualenv其中“巨蟒”是蟒蛇2创造环境。
Answer 3:
Linux发行版慢慢转移到Python3由应用基础的应用程序,通过调整家当线使用Python 3。
CentOS的7,Ubuntu的LTS 14.4,Debian的杰西都默认为Python2.7如果键入python
在命令行上。
如果使用的软件包管理器安装Yocto,它将适用于Linux的发行版本它的作品无论是与通用sheband(装载任何作品python
)或明确一个(装载python2
或python2.7
。
如果你自己安装Yocto,它可能无法正常工作,因为系统你是在默认情况下使用3系巨蟒,你可以从调整家当行:
#!/usr/bin/env python
至
#!/usr/bin/env python2
我认为python2.7将可几年来和安装上的要求,即使python3成为任何这些分布的默认值(就像python3是可用的,当不是默认安装的)。
当从源代码安装Yocto在运行它,你应该考虑virtualenv
,让您安装一个干净的环境,这可能是有点更多的工作,这取决于相关性,但可确保您的应用干净的工作环境,这是不能被打破任何软件包的任何系统更新。 如果你这样做,你的设置甚至可以用一个python2.7.X版本比由Linux发行版提供的不同。
Answer 4:
您可以通过覆盖hosttools修复它的符号链接yocto创建..我设法开始yocto建立与山-X的修复,但它没有建立过。
Yocto来源不同的Env所有的食谱。一些食谱,特别是从元OpenEmbedded的需要hosttools。 这些hosttools是例如蟒(其然后预计python2)。 这hosttools随后在建的/ tmp / hosttools符号链接,这被添加到$ PATH。
蟒蛇 - >在/ usr / bin中/蟒蛇
要改变这种默认为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 消息人士透露/狭小/ OE-INIT-集结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 || {
然后源ENV:
$ source oe-init-build-env build