You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建drug2cell的Conda Recipe测试失败:drug2cell命令未找到

问题

我正从GitHub仓库为drug2cell工具构建Conda Recipe,包已成功构建但测试环节失败。以下是我的meta.yaml文件内容:

{% set name = "drug2cell" %}
{% set version = "main" %}
{% set sha256 = "a6353f989f92f05b36972d42795f7f071245d351bf05027dc7e3e4a074ea5bb8" %}
package:
  name: {{ name|lower }}
  version: {{ version }}
source:
  url: https://github.com/teichlab/drug2cell/archive/main.tar.gz
  sha256: {{ sha256 }}
build:
  noarch: python
  number: 0
  script: {{ PYTHON }} -m pip install . --no-deps --ignore-installed -vv

requirements:
  host:
    - python
    - pip
  run:
    - python
    - anndata
    - pandas
    - numpy
    - statsmodels
    - scipy  
    - blitzgsea
test:
  commands:
    - drug2cell --version

测试时出现如下错误:

drug2cell --version
/opt/anaconda3/conda-bld/drug2cell_1732816346257/test_tmp/run_test.sh: line 7: drug2cell: command not found
WARNING: Tests failed for drug2cell-main-py_0.tar.bz2 - moving package to /opt/anaconda3/conda-bld/broken

CondaBuildUserError: TESTS FAILED: drug2cell-main-py_0.tar.bz2

解决方案

测试失败的核心原因是drug2cell命令未被正确安装到Conda环境的可执行路径中,以下是具体排查和解决方法:

1. 检查原项目的命令入口配置

pip安装生成可执行命令的前提是项目的setup.py或pyproject.toml中配置了console scripts或entry points。需要确认drug2cell仓库的配置文件:

  • 若用setup.py,需存在类似代码:
    from setuptools import setup
    setup(
        # 其他配置项
        entry_points={
            'console_scripts': [
                'drug2cell = drug2cell.main:main',  # 需对应项目实际的入口模块和函数
            ],
        },
    )
    
  • 若用pyproject.toml,需存在类似配置:
    [project.scripts]
    drug2cell = "drug2cell.main:main"
    

如果原项目没有该配置,要么向仓库提交PR补充,要么在Conda构建流程中手动处理。

2. 在Conda构建中手动生成命令脚本

如果原项目未配置入口,可在meta.yaml的build阶段添加步骤,手动创建可执行脚本:
修改build部分:

build:
  noarch: python
  number: 0
  script: |
    {{ PYTHON }} -m pip install . --no-deps --ignore-installed -vv
    # 手动创建drug2cell命令
    echo '#!/usr/bin/env python' > ${PREFIX}/bin/drug2cell
    echo 'from drug2cell.cli import main' >> ${PREFIX}/bin/drug2cell  # 替换为项目实际入口模块
    echo 'if __name__ == "__main__":' >> ${PREFIX}/bin/drug2cell
    echo '    main()' >> ${PREFIX}/bin/drug2cell
    chmod +x ${PREFIX}/bin/drug2cell

注意将drug2cell.cli替换为项目真实的命令行入口模块。

3. 修改测试命令为模块调用方式

若暂时无法修复命令生成问题,可跳过直接调用drug2cell,改用Python模块调用的方式测试:

test:
  commands:
    - python -m drug2cell --version  # 需确认项目支持模块调用方式

4. 验证构建后的文件结构

可在构建脚本中添加调试步骤,查看安装后的文件:
在build的script末尾添加:

ls -la ${PREFIX}/bin/  # 检查bin目录是否存在drug2cell可执行文件

构建时会输出该目录内容,帮助确认命令是否被正确安装。

内容的提问来源于stack exchange,提问作者Menna Ahmed Youssef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:17:11