Conda python 包安装在错误的位置

问题描述 投票:0回答:1

我使用

ssstack
创建了一个名为
conda build
的纯 python conda 包,但是当我使用以下命令安装它(从本地构建目录)时:

conda create -n <env name> -c <path to local build> ssstack`

python 包和 CLI 可执行文件放置在错误的位置。而不是将 python 包放入:

<ENV_ROOT>/lib/python3.12/site-packages/ssstack

它错误地将它们放在环境的根目录中,即:

<ENV_ROOT>/site-packages/ssstack

它还将 python CLI 脚本放在错误的位置;而不是被放入

<ENV_ROOT>/bin/ssstack

它最终被留在:

<ENV_ROOT>/python-scripts/ssstack

很明显,使用环境时找不到python模块和CLI脚本。

这几乎就像 conda 不知道它是一个 python 包,所以不会将其放在

lib/python3.xx
目录下。

奇怪的是,如果我先创建一个仅安装 python 的新环境,然后激活它并将

ssstack
包安装到现有环境中,那么所有东西都会放在正确的位置,即:

conda create -n ssstack_env python==3.12
conda activate ssstack_env
conda install -c <path to local build> ssstack  ## WORKS!

我一生都无法理解为什么后一种方法可以正确工作,而前一种方法却不能。

我花了很多时间寻找原因,但一无所获。任何建议将不胜感激!

这是我的

meta.yaml
食谱供参考:

{% set name = "ssstack" %}
{% set version = "0.4.0" %}

package:
  name: "{{ name|lower }}"
  version: "{{ version }}"

source:
  path: ../../..

build:
  noarch: python
  number: 1
  script: {{ PYTHON }} -m pip install . -vv --no-deps --no-build-isolation


requirements:
  host:
    - pip
    - python>=3.8
    - setuptools
  run:
    - conda
    - conda-lock
    - packaging
    - pydantic
    - pyyaml
    - requests
    - tabulate
    - tqdm
    - typer
python conda conda-build
1个回答
0
投票

好吧 - 经过许多令人沮丧的小时后,我终于自己解决了这个问题。

问题是

python
作为
requirements: -> run:
中的依赖项缺失,即:

requirements:
  run:
    - python

如果没有这个 conda 似乎不会意识到它是一个 python 包,并且不会将

site-packages
和 CLI 脚本放在正确的位置。

这一定是 conda 在某个时候的行为发生了变化,因为据我所知这个配方曾经工作得很好。

附注提醒我这一点的是生成的 conda 包的构建版本缺少

_py
部分。

© www.soinside.com 2019 - 2024. All rights reserved.