首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行conda-build不会找到任何文件。

执行conda-build不会找到任何文件。
EN

Stack Overflow用户
提问于 2021-09-02 13:01:25
回答 2查看 962关注 0票数 3

我试图建立一个简单的包上传到anaconda云。我已经做了很长的工作来获得一个小的例子,但是我无法使用conda在目标机器上构建的包(总是给我一个ModuleNotFound-Error)。但是,我怀疑这是否是目标机器的错误(更可能是构建过程被搞砸了)--所以请容忍我,让我解释一下我做了什么。

我的python代码只是一个文件,里面只有一个函数。

代码语言:javascript
复制
def plusone(number):
  return number+1

如前所述,我想使用conda构建并将包上传到我的anaconda云通道。我已经创建了一个文件夹,名为conda-食谱,其中包含bld.bat、build.sh和meta.yaml文件。所以完整的结构如下:

代码语言:javascript
复制
conda test            (<- root folder)
    conda-recipe
        bld.bat
        build.sh
        meta.yaml
    dist
        <files created by running setup.py>
    plusone
        __init__py
        plusone.py
    plusone.egg-info
        <created info-files>
    README.md
    requirements.txt            (<- only contains a ".")
    setup.py

我通过Anaconda命令行工具将其更改为项目根,然后运行

代码语言:javascript
复制
conda build conda-recipe

一切看起来都很好,上传到anaconda云也很好(包被上传了)。如果我切换到另一台机器,我甚至可以通过运行

代码语言:javascript
复制
conda install -c <MYCHANNEL> <PACKAGENAME>

但是,当我从木星笔记本或Pycharm内部运行这个包时,我会得到一个关于我的包的“ModuleNotFound”错误。首先,我认为这可能与我的目标系统(即我使用包的位置)有关,我已经读过几篇文章,确保正确设置了PYTHONPATH,并且python安装确实查看了安装包的文件夹。我知道包确实被安装了,python安装会查看相应的目录。另外,conda list表示已经安装了包。

在此问题上投资了1/2天之后,我花时间回顾了我的构建过程,并完成了以下工作:如果我只使用参数sdist运行我的setup.py文件,则会创建一个tar.gz文件。我可以上传这个和anaconda云识别文件是一个pypi。我甚至可以在目标机器上下载和安装这个文件,并成功地在那里使用它。因此,一般来说,我会说我的代码很好(惊喜),目标机器的python安装也很好。因此我回到了conda-build指挥部。相信我,我看过文献资料不止一次。

然而,conda-build的输出最后显示如下:

代码语言:javascript
复制
Packaging plusone
INFO:conda_build.build:Packaging plusone
INFO conda_build.build:build(1571): Packaging plusone
Packaging plusone-12.0-0
INFO:conda_build.build:Packaging plusone-12.0-0
INFO conda_build.build:bundle_conda(891): Packaging plusone-12.0-0
No files or script found for output plusone
WARNING:conda_build.build:No files or script found for output plusone
WARNING conda_build.build:bundle_conda(971): No files or script found for output plusone
number of files: 0

对我来说,这表明conda构建过程并没有真正产生可行的输出。因此,我尝试了几种在meta.yaml中指定源部分的选项: url、git_url、path。没有一个能带来不同的产出。看看我的meta.yaml的最新形式:

代码语言:javascript
复制
package:
    name: "plusone"
    version: 12.0

requirements:
    host:
        - python=3.7
        - pip
        - setuptools
    run:
        - python

source:
    path: ../plusone

我的bld.bat:

代码语言:javascript
复制
<ABSOLUTE path to python>\\python.exe "<ABSOLUTE path to setup>\\setup.py" install
if errorlevel 1 exit 1

我的build.sh:$PYTHON setup.py安装

无论我如何更改元.,我总是得到一个输出,即没有找到用于输出的文件。但是,在检查anaconda目录时,我可以看到有名为src_cache和git_cache的非空文件夹,因此我知道anaconda至少可以访问这些文件。

所以-谁能告诉我为什么

  1. conda build告诉我有0份文件
  2. 我不能使用我的conda模块,它总是给我一个ModuleNotFound错误?
EN

回答 2

Stack Overflow用户

发布于 2021-09-03 11:44:07

在再次搜索之后,偶然地,我在S/O:在这里输入链接描述上找到了这个页面。事实证明,改变几件事对我来说是个难题。meta.yaml被更改为包含以下源代码-部分:

代码语言:javascript
复制
source:
  path: ../../

我的bld.bat被更改为

代码语言:javascript
复制
"%PYTHON%" ./conda_test/setup.py sdist install

希望这对任何人都有帮助。

票数 0
EN

Stack Overflow用户

发布于 2021-12-13 12:40:24

对我来说,我的conda meta.yaml文件缺少了一个build部分。我通过添加一个只包含buildpython部分(谢谢@merv让我在正确的轨道上对缺少的run部分的评论)来修复我的0文件找到了错误。

所以现在我的菜谱看起来

代码语言:javascript
复制
package:
  name: mypackage
  version: {{ GIT_DESCRIBE_TAG }}

source:
  path: ..

requirements:
  build:
    - python
  run:
    - astropy
    - ipywidgets
    - matplotlib
    - pooch
    - scipy
    - tifffile
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69030813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档