【问题标题】:Conda dependencies do not install on local package buildconda 依赖项不会安装在本地包构建上
【发布时间】:2018-09-24 04:04:36
【问题描述】:

我正在使用conda-build 构建一个 Python 包。现在我的结构是这样的:

- my_recipe/
    - meta.yaml
    - build.sh

我的meta.yaml 是这样写的:

package:
  name: my_pkg
version: "0.2.0"

source:
  path: ../my_pkg

requirements:
  build:
    - python
    - setuptools
  run:
    - python
    - pandas
    - numpy
    - plotly
    - matplotlib
    - pyqtgraph
    - pyopengl
    - gdal
    - scipy
    - scikit-image

当我运行时,包本身会正确构建

conda-build my_recipe/

当我运行时它安装成功

conda install -n my_env --use-local ~/miniconda3/envs/my_env/conda-bld/linux-64/my_pkg-0.2.0-py36_0.tar.bz2

但是,run 下列出的依赖项似乎都没有与包一起安装(例如,当我在 Python 中导入包时,它说找不到pandas)。

我的依赖项是否列在正确的位置?我还需要在setup.py 中列出依赖项吗?文档对这些信息的位置不是很清楚。

【问题讨论】:

  • 而不是指定完整路径,--use-local 的目的是去查看conda-bld 文件夹。我怀疑原因是您列出了文件的完整路径而不仅仅是包的名称,因为文件的完整路径不安装依赖项。试试conda install -n my_env --use-local my_pkg
  • @darthbith 我可以确认行为并且我没有指向目录。与 OP 一样,在引用构建包(位于 conda-bld 并使用 conda-build 构建)时,conda install 不会安装 run 依赖项。为什么我要再次尝试使用 conda?
  • 您找到解决方案了吗?我遇到了同样的问题。
  • 我也面临类似的问题。有没有已知的解决方案。下面的两种解决方案对我不起作用。
  • 您能接受/支持一个答案吗?这个问题应该被用作这个问题的规范问题,但缺乏支持会阻止这一点。我相信我添加的社区 wiki 是正确的答案,但我无法为自己投票。

标签: python conda


【解决方案1】:

我发现在安装本地包时使用--update-deps 标志确实会按预期安装包的依赖项。像这样:

conda install --use-local --update-deps my-package-name

【讨论】:

  • --use-local 就足够了。
【解决方案2】:

我有幸告诉conda 将本地目录视为频道:

conda install my-package-name -c file:///FULL_PATH_TO_CONDA/envs/my_env/conda-bld/

我根据指令 here 发现了这一点,但请注意,我不必先运行 conda index,因为 conda build 已经创建了 repodata.json 文件。

【讨论】:

  • --use-local 标志在这种情况下也应该可以正常工作。
【解决方案3】:

指定频道对我有用。

实际上,您甚至不需要指定完整路径。例如,从配方所在的文件夹(meta.yaml 和 build.sh),我构建我的包:

conda-build . --output-folder ./build

然后,我安装包:

conda install my_package_name -c ./build

这还将安装 meta.yaml 中指定的依赖项。这是我的 meta.yaml 的样子。

package:
  name: my_package_name
  version: 0.0.1

source:
  path: .

requirements:
  build:
    - python
    - setuptools

  run:
    - python
    - numpy
    - holopy
    - scikit-image

【讨论】:

  • 你试过--use-local pkg_name吗?
【解决方案4】:

正如@darthbith 所评论的,使用带有包名的--use-local 标志,

conda install -n my_env --use-local my_pkg

按预期工作。使用 tarball 的路径会直接触发 Conda 安装而无需依赖。

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 2021-05-01
    • 2018-02-02
    • 2017-04-18
    • 1970-01-01
    • 2017-04-08
    • 2014-12-09
    • 2021-10-05
    • 1970-01-01
    相关资源
    最近更新 更多