好的,我有一个包Pythran,它是PythontoC++ (PYD模块)编译器。康达锻造上的包裹本身表示,它需要clang和clangxx。但是我已经安装了MS构建工具clang-12,所以这些包根本不使用。
现在每次我去conda install [package_name]时,它都会告诉我我的环境不一致,因为我强制通过a删除了我不需要(或不想要)的clang库:
conda remove clang clangxx clang-13 --force所以我环顾四周看了一下东西的安装。我发现有一个\Anaconda3\conda-meta\pythran-0.11.0-py39h832f523_0.json (请注意版本更改后的名称).
所以我打开了那个文件,滚动到:
"depends": [
"beniget 0.4.*",
"decorator",
"gast 0.5.*",
"numpy >=1.19.5,<2.0a0",
"ply >=3.4",
"python >=3.9,<3.10.0a0",
"python_abi 3.9.* *_cp39",
"xsimd >=8.0.5,<8.1"
],其中有这些条目,我手动删除了:
"clang",
"clangxx",所以现在,当我去运行conda时,它不再说我的环境不一致了。但是,当我尝试添加一个包时,它坚持要安装clang、clang-13、clangxx。
有人有办法完全消除这些依赖吗?我认为这可能是指在线文件,而不是本地文件,因为我删除了所需的库。我运行了一个命令提示符:findstr /S /C:'clang' *,这就像从Linux调用grep一样。它显示了引用clang的所有文件。除了我已经删除的内容之外,其他地方都没有引用它,因此我感到困惑。
是的,我知道像conda这样的包管理器应该确保您的环境正常工作。但是,我可以将Python (模块)编译成C++,这些clang库完全没有问题。因为我的路径中已经有clang-12了。这比任何事情都麻烦,因为每个包安装/升级都希望安装不需要的clang-13库.
发布于 2022-03-01 00:36:11
虚拟包
更干净的解决方案是创建一个虚拟包,您可以将其安装为相应软件已经在系统上可用的指示符。这就是套餐。具体来说,它们提供了一个外部构建(参见食谱),可以安装该构建。
conda install 'mpich=*=external_*'创建clang虚拟包
对于您想要的自定义配置,创建您自己的clang和clangxx包的虚拟版本,以满足需求并将它们安装到环境中。有点像
meta.yaml
{% set version = "12.0.1" %}
{% set build = 0 %}
package:
name: clang-dummies
version: {{ version }}
build:
number: {{ build }}
outputs:
- name: clang
string: external_{{ build }}
- name: clangxx
string: external_{{ build }}
about:
license: GPL-3.0-only
summary: Dummy package for external clang(xx) compiler.在构建这个(conda build .)之后,您可以用
conda install --use-local 'clang=12=external*' 'clangxx=12=external*'或者将它们上传到用户Anaconda频道。
https://stackoverflow.com/questions/71302220
复制相似问题