【问题标题】:Using Maturin when external library is needed需要外部库时使用 Maturin
【发布时间】:2020-12-07 16:56:43
【问题描述】:

我正在尝试从我正在制作的 Rust Crate 制作 Python 包。问题是我需要RGSL crate,它需要在系统中安装libgsl0-dev

我正在尝试使用Maturin which uses Manylinux Docker 映像发布以构建适用于 Linux 的所有内容。问题是图像没有安装libgsl0-dev,所以我做了一个自定义图像添加一行:

FROM konstin2/maturin

# To solve problems with CentOS 6 EOL 
RUN echo "https://vault.centos.org/6.10/os/x86_64/" > /var/cache/yum/x86_64/6/base/mirrorlist.txt
RUN echo "http://vault.centos.org/6.10/extras/x86_64/" > /var/cache/yum/x86_64/6/extras/mirrorlist.txt
RUN echo "http://vault.centos.org/6.10/updates/x86_64/" > /var/cache/yum/x86_64/6/updates/mirrorlist.txt
RUN echo "http://vault.centos.org/6.10/sclo/x86_64/rh" > /var/cache/yum/x86_64/6/centos-sclo-rh/mirrorlist.txt
RUN echo "http://vault.centos.org/6.10/sclo/x86_64/sclo" > /var/cache/yum/x86_64/6/centos-sclo-sclo/mirrorlist.txt

# Installs needed library
RUN yum install -y libgsl0-dev

ENTRYPOINT ["/usr/bin/maturin"]

但是当我尝试构建时:

docker run --rm -v $(pwd):/io custom-image build --cargo-extra-args="--no-default-features"

⚠ 警告:您正在构建库而不激活 pyo3 extension-module 功能。看 https://pyo3.rs/v0.12.4/building_and_distribution.html#linking ???? 找到 pyo3 绑定????在 python3.6 找到 CPython 3.6m,CPython 3.7m 在 python3.7,CPython 3.8 在 python3.8,CPython 3.9 在 python3.9
编译pyo3 v0.12.4报错:找不到本机静态库 python3.6m,可能缺少 -L 标志

我在这里缺少什么?任何形式的帮助将不胜感激

【问题讨论】:

  • 尝试将py03 = { version = "whatever your using", features = ["extension-module"]} 添加到您的 Cargo.toml。我现在无法重新创建此错误,但这是我认为错误消息告诉您执行的操作。另外,请尝试再次查看 py03 自述文件,看看是否遗漏了什么。
  • 感谢您的评论!不幸的是它没有解决错误。与 manylinux 兼容似乎是一个问题,一些库可用于所有发行版,GSL 不是其中之一。我已经打开 an issue 要求这个

标签: python rust pyo3


【解决方案1】:

正如一位用户在this issue 中指出的那样,安装的 GSL 版本存在问题:我使用的函数是在库的最后一个版本中添加的。我还必须使用命令wheel-repair 来包含一些丢失的.so 文件。整个流程在this issue

【讨论】:

    猜你喜欢
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    相关资源
    最近更新 更多