conda 从本地存档文件构建源

Posted

技术标签:

【中文标题】conda 从本地存档文件构建源【英文标题】:conda build source from local archive file 【发布时间】:2018-10-25 10:32:58 【问题描述】:

conda build 支持多种方法来导入要在构建中使用的源,如here 所述。有没有办法从本地存档文件(.zip、.tar.gz 等)导入源代码?我尝试使用用于指向本地源的 path: 选项指定存档文件的位置;但是,存档文件会被移动到构建工作目录中,而无需解压缩。我显然可以明确地解压档案;但是,这需要我在构建文件中明确指定文件名,这出于多种原因是不可取的。有没有办法从本地存档文件导入源代码并自动解压到工作目录,就像通过 url 和 fn 规范导入的文件一样?

【问题讨论】:

【参考方案1】:

您可以尝试在url 字段中使用file:// 协议:

source:
   url: file:///home/src/mypkgsrc.tar.bz2

在 Windows 上,可以尝试:

source:
   url: file://C:\path\to\mypkgsrc.tar.bz2

【讨论】:

此方法将尝试解析从构建目录到文件的相对路径,而不是绝对路径。鉴于我的文件路径无法解析,即使找到文件,我也无法确认源是否会被解压。 不,它会解析绝对路径。它是file://,然后是绝对路径。请在否决答案之前尝试一下。 我确实尝试过,它解决了相对路径,而不是绝对路径,因此我投反对票 /home/src/mypkgsrc.tar.bz2 是绝对路径吗?另外,也可以指定多个 url。 我只是在 linux 上测试了这个,而不是我之前在 windows 上的尝试,发现它成功了。如果您编辑答案,我很乐意投票,因为我的投票目前已锁定。【参考方案2】:

扩展上一个答案,file:// URL 必须是绝对的,但您可以使用 jinja2 变量来解决这个问题。例如,如果您可以找到与配方目录相关的文件,您可以编写如下内容:

source:
    url: file://RECIPE_DIR/../src/mypkgsrc.tar.bz2

【讨论】:

以上是关于conda 从本地存档文件构建源的主要内容,如果未能解决你的问题,请参考以下文章

从资产存档和预构建的二进制文件统一构建目标包

使用 conda 构建和安装本地或自定义 R 包

Tips:outlook(Exchange 模式) 无法存档

PHP PharData:从目录构建 .tar 存档,带有排除项

如何从 asar 存档中提供静态文件

Conda Cython 构建 PYD/SO 文件