首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建python包

构建python包
EN

Stack Overflow用户
提问于 2013-04-19 02:31:35
回答 1查看 9.1K关注 0票数 3

我正在对几个python库进行bitbaking测试,在添加第二个时得到以下警告:

代码语言:javascript
复制
WARNING: The recipe is trying to install files into a shared area when those files already exist. Those files are:
   /home/ilya/beaglebone-dany/build/tmp/sysroots/beaglebone/usr/lib/python2.7/site-packages/site.py
   /home/ilya/beaglebone-dany/build/tmp/sysroots/beaglebone/usr/lib/python2.7/site-packages/site.pyo

这两个库都使用inherit distutils。因此,就bitbake而言,这是可以的,但是当我尝试通过opkg安装第二个包时,我得到了这个错误:

代码语言:javascript
复制
# opkg install http://yocto.local:8080/python-requests_1.2.0-r0_armv7a-vfp-neon.ipk
Downloading http://yocto.local:8080/python-requests_1.2.0-r0_armv7a-vfp-neon.ipk.
Installing python-requests (1.2.0-r0) to root...
Configuring python-requests.

# opkg install http://yocto.local:8000/python-mylib_0.0.1-r0_armv7a-vfp-neon.ipk
Downloading http://yocto.local:8080/python-mylib_0.0.1-r0_armv7a-vfp-neon.ipk.
Installing python-mylib (0.0.1-r0) to root...
Collected errors:
 * check_data_file_clashes: Package mylib-python wants to install file /usr/lib/python2.7/site-packages/site.py
        But that file is already provided by package  * python-requests
 * check_data_file_clashes: Package mylib-python wants to install file /usr/lib/python2.7/site-packages/site.pyo
        But that file is already provided by package  * python-requests
 * opkg_install_cmd: Cannot install package mylib-python.

两个食谱看起来都是这样的:

代码语言:javascript
复制
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"

我从pycurl recipe复制了这段代码,它也有我删除的这些行:

代码语言:javascript
复制
do_install_append() {
    rm -rf ${D}${datadir}/share
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-21 01:55:37

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

代码语言:javascript
复制
do_install_append() {
  rm -f ${D}${libdir}/python*/site-packages/site.py*
}

原始版本的recipe有另一个问题,它安装的文件只包含.egg目录。我无法对结果包执行import操作。

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

我不是Python专家,但setuptools class所做的就是:

代码语言:javascript
复制
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}"

事实证明,一些模块(例如PyBBIO)不能识别--single-version-externally-managed,所以你必须使用inherit distutils,这样你就得到了一个可以工作的包。

下面是python-requests包的完整配方,如果你打算使用它,它很快就会在上游提供。

代码语言:javascript
复制
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*
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16090550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档