Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
构建python包_Python_Openembedded_Bitbake - Fatal编程技术网

构建python包

构建python包,python,openembedded,bitbake,Python,Openembedded,Bitbake,我正在创建几个python库,在添加第二个python库时收到此警告: 警告:当文件已经存在时,配方正在尝试将文件安装到共享区域。这些文件是: /home/ilya/beaglebone-dany/build/tmp/sysroot/beaglebone/usr/lib/python2.7/site-packages/site.py /home/ilya/beaglebone-dany/build/tmp/sysroot/beaglebone/usr/lib/python2.7/site-pac

我正在创建几个python库,在添加第二个python库时收到此警告:

警告:当文件已经存在时,配方正在尝试将文件安装到共享区域。这些文件是:
/home/ilya/beaglebone-dany/build/tmp/sysroot/beaglebone/usr/lib/python2.7/site-packages/site.py
/home/ilya/beaglebone-dany/build/tmp/sysroot/beaglebone/usr/lib/python2.7/site-packages/site.pyo
这两个库都使用
继承distutils
。就bitbake而言,这还可以,但当我试图通过opkg安装第二个包时,我遇到了以下错误:

#opkg安装http://yocto.local:8080/python-请求_1.2.0-r0_armv7a-vfp-neon.ipk
正在下载http://yocto.local:8080/python-请求_1.2.0-r0_armv7a-vfp-neon.ipk。
正在将python请求(1.2.0-r0)安装到根目录。。。
配置python请求。
#opkg安装http://yocto.local:8000/python-mylib_0.0.1-r0_armv7a-vfp-neon.ipk
正在下载http://yocto.local:8080/python-mylib_0.0.1-r0_armv7a-vfp-neon.ipk。
正在将python mylib(0.0.1-r0)安装到根目录。。。
收集的错误:
*检查\u数据\u文件\u冲突:包mylib python想要安装文件/usr/lib/python2.7/site-packages/site.py
但该文件已经由package*python请求提供
*check_data_file_冲突:包mylib python想要安装文件/usr/lib/python2.7/site-packages/site.pyo
但该文件已经由package*python请求提供
*opkg_install_cmd:无法安装程序包mylib python。
两种食谱看起来都是这样的:

DESCRIPTION = "Requests: HTTP for Humans"
HOMEPAGE = "http://docs.python-requests.org/en/latest/"
SECTION = "devel/python"
LICENSE = "Apache-2.0"

DEPENDS = "python"
RDEPENDS_${PN} = "python-core"
PR = "r0"

SRC_URI = "git://github.com/kennethreitz/requests;protocol=git"

S = "${WORKDIR}/git/"

inherit distutils

#NOTE: I'm not 100% sure whether I still need to export these?
export BUILD_SYS
export HOST_SYS
export STAGING_INCDIR
export STAGING_LIBDIR

BBCLASSEXTEND = "native"
我从中复制了此内容,并删除了以下行:

do_install_append() {
    rm -rf ${D}${datadir}/share
}

要消除冲突的
/usr/lib/python2.7/site packages/site.py
,需要通过以下操作避免发送此文件:

do_install_append() {
  rm -f ${D}${libdir}/python*/site-packages/site.py*
}
配方的原始版本还有另一个问题,它安装的文件只包含
.egg
目录。我无法导入生成的包

事实证明,使用
inherit setuptools
而不是
inherit distutils
是可行的

我不是Python专家,但我所做的只是:

inherit distutils

DEPENDS += "python-setuptools-native"

DISTUTILS_INSTALL_ARGS = "--root=${D} \
    --single-version-externally-managed \
    --prefix=${prefix} \
    --install-lib=${PYTHON_SITEPACKAGES_DIR} \
    --install-data=${datadir}"
事实证明,某些模块(例如)无法识别
——外部管理的单一版本
,因此您必须使用
继承distutils
,并且您确实获得了一个工作包

下面是python请求包的完整配方,如果您打算使用它,它很快就会在上游提供

DESCRIPTION = "Requests: HTTP for Humans"
HOMEPAGE = "http://docs.python-requests.org/en/latest/"
SECTION = "devel/python"
LICENSE = "Apache-2.0"

#DEPENDS = "python-core"
RDEPENDS_${PN} = "python"
PR = "r0"

SRC_URI = "git://github.com/kennethreitz/requests;protocol=git"

S = "${WORKDIR}/git/"

inherit setuptools

# need to export these variables for python-config to work
export BUILD_SYS
export HOST_SYS
export STAGING_INCDIR
export STAGING_LIBDIR

BBCLASSEXTEND = "native"

do_install_append() {
  rm -f ${D}${libdir}/python*/site-packages/site.py*
}