Conda 依赖项不会安装在本地包生成上

Conda dependencies do not install on local package build

提问人:Bryce Frank 提问时间:4/14/2018 最后编辑:didgereeduBryce Frank 更新时间:3/11/2022 访问量:4556

问:

我正在使用 .现在,我的结构如下所示:conda-build

- 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

但是,下面列出的任何依赖项似乎都没有与软件包一起安装。例如,当我在 Python 中导入包时,它说找不到。runpandas

我的依赖项是否列在正确的位置?我还需要在 中列出依赖项吗?文档中关于此信息应该在哪里不是很清楚。setup.py

python conda

评论

5赞 darthbith 4/14/2018
与其说是指定完整路径,不如说是去查看文件夹。我怀疑原因是您列出了文件的完整路径,而不仅仅是包的名称,因为文件的完整路径不会安装依赖项。尝试使用--use-localconda-bldconda install -n my_env --use-local my_pkg
1赞 medley56 7/22/2020
@darthbith我可以确认行为,但我没有指向目录。与 OP 一样,当引用构建的包(位于 中并构建使用 )时,不会安装依赖项。为什么我要再次尝试使用 conda?conda-bldconda-buildconda installrun
2赞 jarandaf 1/27/2021
你设法找到解决方案了吗?我遇到了同样的问题。
0赞 Naresh 10/11/2021
我也面临类似的问题。是否有任何已知的解决方案。下面的两个解决方案对我不起作用。
0赞 merv 12/29/2021
你能接受/赞成一个答案吗?这个问题应该被用作这个问题的规范问题,但缺乏赞成票会阻止这一点。我相信我添加的社区维基是正确的答案,但我不能给自己投赞成票。

答:

0赞 RobinDunn 9/15/2020 #1

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

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

评论

0赞 merv 12/29/2021
这就足够了。--use-local
1赞 Singularity 4/2/2021 #2

我很幸运地告诉将本地目录视为一个频道:conda

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

我根据这里的说明弄清楚了这一点,尽管请注意,我不必先运行,因为已经创建了文件。conda indexconda buildrepodata.json

评论

0赞 merv 11/23/2021
在这种情况下,该标志也应该正常工作。--use-local
4赞 Miotto 10/15/2021 #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

评论

0赞 merv 10/15/2021
你试过吗?--use-local pkg_name
0赞 mara004 10/31/2023
谢谢,这对我有用,而没有!--use-local
2赞 merv #4

As commented by @darthbith, using the flag with the package name,--use-local

conda install -n my_env --use-local my_pkg

works as intended. Using a path to a tarball directly triggers Conda to install without dependencies.