默认情况下使用yocto使用python3进行分发

时间:2015-02-06 07:43:26

标签: python linux yocto

越来越多的Linux发行版使用python 3.x作为默认python,但Yocto仍使用python 2.7。如何将Yocto与其中一个发行版一起使用?

4 个答案:

答案 0 :(得分:3)

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}

感谢大家的帮助!

答案 1 :(得分:1)

这里的规范解决方案是使用virtualenv创建一个“python”是python 2的环境。

答案 2 :(得分:0)

Linux发行版在应用程序的基础上逐渐转移到Python3,通过调整shebang行来使用Python 3。

如果您在命令行上键入python,则CentOS 7,Ubuntu 14.4 LTS,Debian Jessy都默认到Python2.7。

如果使用软件包管理器安装Yocto,它将适用于Linux发行版上的任何工作,无论是通用sheband(加载python)还是显式加载(加载python2python2.7

如果您自己安装Yocto,并且它可能无法正常工作,因为您所使用的系统默认使用3系列中的python,您可以调整以下的shebang行:

#!/usr/bin/env python

#!/usr/bin/env python2

我认为python2.7将在未来几年内可用并可根据需求进行安装,即使python3成为任何这些发行版的默认设置(就像python3在默认情况下未安装时一样)。

从源代码安装Yocto时应该考虑的是在virtualenv中运行它,这样您就可以设置一个干净的环境,这可能会更加有效,具体取决于依赖性,但可以确保为您提供干净的工作环境应用程序,任何软件包的任何系统更新都无法破解。如果你这样做,你的设置甚至可以使用不同于Linux发行版提供的python2.7.X版本。

答案 3 :(得分:0)

你可以通过覆盖ytoto创建的hosttools符号链接来修复它。 我设法用Shan-x的修复程序启动yocto构建,但它没有构建完成。

Yocto为所有食谱提供了不同的env ..一些食谱,特别是来自meta-openembedded的食谱需要 hosttools 。这些主机工具例如是python(后来预计是python2)。 然后将此主机工具列在 build / tmp / hosttools 中进行符号链接,并将其添加到$ PATH。

  

python - >的/ usr /斌/蟒

将此更改为默认为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 || {

然后获取env:

$ source oe-init-build-env build