越来越多的Linux发行版使用python 3.x作为默认python,但Yocto仍使用python 2.7。如何将Yocto与其中一个发行版一起使用?
答案 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
)还是显式加载(加载python2
或python2.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