标签: conda-build

Python 打包:在 `conda` `meta.yaml` 文件中创建对 `conda-forge` 包的依赖

我正在编写一个包,conda-forge并且需要指定对另一个conda-forge依赖项的依赖项。本质上,我需要安装该包的固定版本,因为它实际上编译了支持 BIGTIFF 文件conda-forge gdal的版本......libtiff

现在,如果我要安装gdal到一个conda环境中,我会写类似的内容。

conda install -c conda-forge gdal=2.4.4 
Run Code Online (Sandbox Code Playgroud)

我想在安装软件包时获取此版本的gdal=2.4.4安装包。conda-forge现在在meta.yaml文件中,我可以像这样指定包依赖项,但我没有看到如何指定 tar 文件的 URL 或任何可行的方法。

{% set version = "0.0.1" %}

package:
  name: mypackage
  version: {{ version }}

source:
  url: https://github.com/myrepo/{{ version }}.tar.gz
  sha256: ****6a63

build:
  number: 1
  skip: true  # [win and py27]
  entry_points:
    - mycli = mypackage.main:main

requirements:
  build:
    - python
    - 
  host:
    - python
    - pip
    - numpy
    - gdal …
Run Code Online (Sandbox Code Playgroud)

python gdal conda conda-build conda-forge

5
推荐指数
1
解决办法
1180
查看次数

Conda glibc 依赖冲突

当我尝试构建 conda 包时出现一个奇怪的错误。

$ conda-build pkg2

....
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
failed   
....
The following specifications were found to be incompatible with your system:

  - feature:/linux-64::__glibc==2.17=0
  - feature:|@/linux-64::__glibc==2.17=0
  - pkg1 -> __glibc[version='>=2.17,<3.0.a0']

Your installed version is: 2.17
Run Code Online (Sandbox Code Playgroud)

在我看来,它似乎glibc 2.17满足所有三个要求,但 conda 认为存在冲突。

澄清pkg2一下,取决于我在本地构建的另一个包,pkg1. pkg1是一个带有 python 接口的 C++ 库,它依赖于libfftw. 我libfftw在 conda 上找不到,所以必须通过 yum 在构建主机上安装它,它运行 CentOS7 glibc 2.17,因此依赖。

pkg1 …

python glibc build conda conda-build

5
推荐指数
1
解决办法
1266
查看次数

如何从主机包复制许可证

当编译使用仅头文件库的软件时,许可可能需要与编译的软件一起分发库许可证的副本。此外,Conda Forge 明确(请参阅PR 模板),包必须包含静态链接依赖项的原始许可证,这对于仅标头库来说确实是这样。但是,我无法找到有关如何解析host级别包的许可证文件的文档。

如何在配方中指定meta.yaml从特定包复制许可证?

最小的例子

tsl_robin_map这是使用仅标头库的最小示例。我知道软件包tsl_robin_maptarball具有info/licenses/LICENSE. 但是,我不知道如何在配方中指定该路径。

元数据文件

package:
  name: hello-robin
  version: 0.1

source:
  path: .

build:
  number: 0

requirements:
  build:
    - {{ compiler('cxx') }}
  host:
    - tsl_robin_map

test:
  commands:
    - hello-robin

# about:
#   license_file:   
#     - <path_to_tsl_robin_map>/info/licenses/LICENSE  # <- how should this be specified?
Run Code Online (Sandbox Code Playgroud)

你好.cpp

#include <iostream>
#include <tsl/robin_map.h>

int main()
{
  std::cout << "Hello, Robin!";
}
Run Code Online (Sandbox Code Playgroud)

构建.sh

#!/bin/bash
${CXX} ${CPPFLAGS} -o …
Run Code Online (Sandbox Code Playgroud)

c++ jinja2 conda-build conda-forge

5
推荐指数
1
解决办法
150
查看次数

如何使用conda安装本地包

我有一个本地 python 项目,jive我想在另一个项目中使用它。我当前在其他项目中使用的方法jive是激活项目的 conda env,然后移动到我的jive目录并使用python setup.py install. 这工作正常,当我使用 时conda list,我会看到环境中安装的所有内容,包括,以及使用 pip 安装的jive注释。jive

但我真正想要的是用完整的 conda 来做到这一点。当我想jive在另一个项目中使用时,我只想放入jive该项目中environment.yml

所以我做了以下事情:

  1. 写一个简单的,这样我就可以使用 conda-build 在本地meta.yaml构建jive
  2. 构建 jiveconda build .
  3. 我查看了生成的 tarball,它确实包含jive预期的源代码
  4. 在我的另一个项目中,将 jive 添加到 中的依赖项environment.yml,并将“local”添加到频道列表中。
  5. 使用该environment.yml 创建一个conda env。

当我激活环境并使用 时conda list,它会根据需要列出所有依赖项jive,包括 。但是当我打开python解释器时,我不能import jive,它说没有这样的包。(如果使用python setup.py install,我可以导入它。) 如何修复构建/安装以使其正常工作?

jive这是位于项目顶级目录中的meta.yaml :

package:
  name: …
Run Code Online (Sandbox Code Playgroud)

python conda conda-build

5
推荐指数
1
解决办法
5049
查看次数

安装 `help` 期间交叉编译失败:“安装 Rd 对象失败”

help安装过程中自加载库

\n

我在 Conda Forge 基础设施 ( r-xml2-feedstock ) 上交叉编译R 包xml2时遇到了问题。Conda Forge *nix 为 R 构建,执行方式为:

\n
R CMD INSTALL --no-test-load --build .\n
Run Code Online (Sandbox Code Playgroud)\n

其中--no-test-load标志(通常)有助于避免交叉编译的任何问题。动态库的构建(包括链接到 target-native )libxml2工作得很好。但是,在该步骤中包安装失败help

\n
R CMD INSTALL --no-test-load --build .\n
Run Code Online (Sandbox Code Playgroud)\n

显然,这会失败,因为它.dylib不是为主机架构编译的,所以我们不希望它是可加载的。问题是:为什么help安装步骤尝试加载共享库?如何避免这种情况?

\n
\n

我尝试过的

\n

我已经确认这确实是help触发此自加载的步骤。通过添加标志,包构建工作得很好--no-help。然而,这并不理想——最好向所有平台提供帮助手册。

\n

尝试仅排除帮助的特定部分并不能避免自加载错误,即,每个--no-docs--no-html标志仍然失败。

\n

想法

\n

我怀疑 .Rd 文件(示例?)中的某些内容正在触发 R 尝试加载库。但是,我在使用 Roxygen2 生成的 .Rd 文件作为帮助文档的其他 R 包中没有遇到此问题。例如, …

r cross-compiling conda-build conda-forge

5
推荐指数
1
解决办法
196
查看次数

使用新的 libmamba 求解器时,如何消除来自 conda 的虚假警告,re: JSON 缓存文件?

自从升级到新的libmamba解算器以来,当我执行以下操作时,我收到了这些虚假警告conda build ...

warning  libmamba Could not parse state file: Could not load cache state: [json.exception.type_error.302] type must be string, but is null
warning  libmamba Could not remove state file "C:\\Users\\dbanas\\miniconda3\\pkgs\\cache\\c73d9827.state.json": The pro
Run Code Online (Sandbox Code Playgroud)

我想知道如何禁用它们。

solver conda-build mamba

5
推荐指数
1
解决办法
1178
查看次数

标签 统计

conda-build ×6

conda ×3

conda-forge ×3

python ×3

build ×1

c++ ×1

cross-compiling ×1

gdal ×1

glibc ×1

jinja2 ×1

mamba ×1

r ×1

solver ×1