我在哪里放置与我的项目相关的 conda-recipe?

Posted

技术标签:

【中文标题】我在哪里放置与我的项目相关的 conda-recipe?【英文标题】:Where do I put a conda-recipe relative to my project? 【发布时间】:2017-04-18 20:30:33 【问题描述】:

我创建了一个我想用 conda 构建的 python 项目,但是当我 cd 到 conda-recipe 文件夹并运行 conda build . 时出现错误,找不到 setup.py 文件。我尝试将 conda-recipe 移动到与 setup.py 相同的级别并将源部分添加到我的 meta.yaml 但我仍然收到错误消息。相对于我的 python 包放置 conda-recipe 的最佳位置在哪里?

这是我的项目结构:

- MyProject/
  |- conda-recipe/
    |- bld.bat
    |- build.sh
    |- meta.yaml
  |- code/
    |- subpackage/
      |- __init__.py
      |- foo.py
  |- tests/
    |- test_foo.py
  |-setup.py

这是我的 bld.bat 的内容:

"%PYTHON%" setup.py sdist install
if errorlevel 1 exit 1

还有 build.sh:

#!/bin/bash

$PYTHON setup.py sdist install     

还有 meta.yaml:

package:
  name: myproject
  version: "1.0.0" 

source:
  path: ../code

requirements:
  build:
    - python
    - setuptools

  run:
    - python
    - argparse

为了完整起见,这里是错误:

(C:\Anaconda2\conda-bld\myproject_1492545717354\_b_env) 
  C:\Anaconda2\conda-bld\myproject_1492545717354\work>
  "C:\Anaconda2\conda-bld\myproject_1492545717354\_b_env\python.exe" setup.py 
  sdist install C:\Anaconda2\conda-bld\myproject_1492545717354\_b_env\python.exe: 
  can't open file 'setup.py': [Errno 2] No such file or directory

【问题讨论】:

setup.py 似乎不在code 文件夹中。 @NehalJWani 不,它在它之外,与测试文件夹处于同一级别。我正在脱离 Python 打包机构 github.com/pypa/sampleproject 定义的项目结构,项目应该以不同的方式组织吗? 您尝试将path: ../code 替换为path: ../../ 吗? 根据conda.io/docs/building/meta-yaml.html#source-section ,source 部分下的path 指令应该指向包含整个源代码的目录。 @NehalJWani 这解决了问题!谢谢!我是否将 coda-recipe 放在项目中的正确位置,还是应该放在其他地方?有首选位置吗? 【参考方案1】:

IIUC,conda-recipe 文件夹的位置并不重要,只要它知道源代码的确切位置即可。

根据documentation,path 的值应该指向源存储库的副本。在您的情况下,它是“MyProject”,因此您可以尝试替换...

path: ../code 

path: ../../

更好的是,使用 $RECIPE_DIR environment variable 使其绝对而不是相对:

path: $RECIPE_DIR/../..

【讨论】:

不要使用$RECIPE_DIR;路径已经是relative to the recipe directory。使用 $RECIPE_DIR 将中断源外构建。

以上是关于我在哪里放置与我的项目相关的 conda-recipe?的主要内容,如果未能解决你的问题,请参考以下文章

确保 Eclipse LogCat 显示与我的应用程序相关的项目

Angular 5 / 6. 我在哪里放置我的登录页面?

`go get`命令失败:无法识别的导入路径“_ / ”

android.content.res.Resources $ NotFoundException - 但不是来自与我的应用程序相关的代码

在哪里放置相对于 java 项目的声音文件?

prepareForSegue 传递索引 0 的值...总是