我正在编写一个包,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) 当我尝试构建 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 …
当编译使用仅头文件库的软件时,许可可能需要与编译的软件一起分发库许可证的副本。此外,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) 我有一个本地 python 项目,jive我想在另一个项目中使用它。我当前在其他项目中使用的方法jive是激活项目的 conda env,然后移动到我的jive目录并使用python setup.py install. 这工作正常,当我使用 时conda list,我会看到环境中安装的所有内容,包括,以及使用 pip 安装的jive注释。jive
但我真正想要的是用完整的 conda 来做到这一点。当我想jive在另一个项目中使用时,我只想放入jive该项目中environment.yml。
所以我做了以下事情:
meta.yaml构建jiveconda build .jive预期的源代码environment.yml,并将“local”添加到频道列表中。当我激活环境并使用 时conda list,它会根据需要列出所有依赖项jive,包括 。但是当我打开python解释器时,我不能import jive,它说没有这样的包。(如果使用python setup.py install,我可以导入它。)
如何修复构建/安装以使其正常工作?
jive这是位于项目顶级目录中的meta.yaml :
package:
name: …Run Code Online (Sandbox Code Playgroud) help安装过程中自加载库我在 Conda Forge 基础设施 ( r-xml2-feedstock ) 上交叉编译R 包xml2时遇到了问题。Conda Forge *nix 为 R 构建,执行方式为:
R CMD INSTALL --no-test-load --build .\nRun Code Online (Sandbox Code Playgroud)\n其中--no-test-load标志(通常)有助于避免交叉编译的任何问题。动态库的构建(包括链接到 target-native )libxml2工作得很好。但是,在该步骤中包安装失败help:
R CMD INSTALL --no-test-load --build .\nRun Code Online (Sandbox Code Playgroud)\n显然,这会失败,因为它.dylib不是为主机架构编译的,所以我们不希望它是可加载的。问题是:为什么help安装步骤尝试加载共享库?如何避免这种情况?
我已经确认这确实是help触发此自加载的步骤。通过添加标志,包构建工作得很好--no-help。然而,这并不理想——最好向所有平台提供帮助手册。
尝试仅排除帮助的特定部分并不能避免自加载错误,即,每个--no-docs和--no-html标志仍然失败。
我怀疑 .Rd 文件(示例?)中的某些内容正在触发 R 尝试加载库。但是,我在使用 Roxygen2 生成的 .Rd 文件作为帮助文档的其他 R 包中没有遇到此问题。例如, …
自从升级到新的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)
我想知道如何禁用它们。