Errors#

This page lists common conda-ship errors and the usual fix.

cs prints human-readable diagnostics by default. The conda ship adapter uses an internal structured diagnostic mode so it can show the same errors through conda without depending on terminal formatting.

Project Input#

could not find project root containing conda.toml, pixi.toml, or supported pyproject.toml

Run from the project root or pass --root PATH.

could not find conda.toml, pixi.toml, or supported pyproject.toml

Add a supported manifest to the selected root. A pyproject.toml needs a nonempty [tool.conda.workspace] or [tool.pixi.workspace] table. [tool.conda-ship] alone does not define a source workspace.

lockfile not found

Refresh and commit the matching source lockfile with conda workspace lock or pixi lock.

source environment is required

Set [tool.conda-ship].source-environment.

source environment "NAME" not found

Add the environment to the source manifest and refresh the source lockfile.

source environment "NAME" contains unsupported PyPI packages

Diagnostic kind: unsupported_pypi_packages. Use conda packages or select a source environment containing only conda packages, then refresh the lockfile with conda workspace lock or pixi lock.

runtime version is required

Pass --runtime-version, set [tool.conda-ship].runtime-version, define static [project].version in the selected pyproject.toml, or opt into runtime-version = { from = "project-metadata" } through the Python conda ship adapter for dynamic Python project versions.

failed to read condarc-file

Check [tool.conda-ship].condarc-file. Relative paths start from the selected manifest directory.

failed to parse condarc-file as YAML

Fix the referenced YAML file.

condarc-file must contain a YAML mapping

Use normal condarc key and value entries rather than a top-level scalar or sequence.

Package Archives#

cannot bundle packages without SHA256 hashes

Refresh the source lockfile with package hash metadata before building external or embedded layouts.

no default environment in ... runtime.lock

The derived runtime lock is malformed. Rebuild from the source lockfile.

Template Selection#

runtime template not found

Install a conda-ship package that includes cs-template, set CONDA_SHIP_TEMPLATE, or pass --template PATH.

cross-builds require --template

Pass a prebuilt runtime template for the requested target.

runtime template is already stamped

--template points at a generated runtime instead of a generic template.

runtime template is incompatible with authenticated runtime data

Mach-O and PE templates must contain the exact reader ABI declaration from the current format implementation in its dedicated image section. Use cs-template from the same conda-ship release as the builder. conda-ship 0.9.0 rejects native templates from 0.8.0 and earlier even when their executable layout could otherwise be stamped. The declaration is not proof of template provenance.

universal Mach-O binaries are not supported

Use a thin macOS template for the selected target. The builder also rejects 32-bit and big-endian Mach-O templates.

Mach-O runtime template is not an executable image

Use a thin MH_EXECUTE template, not a dynamic library or another Mach-O file type.

Mach-O runtime template CPU type ... with subtype ... does not match platform ...

Use an x86_64 template for osx-64 and an arm64 template for osx-arm64.

unsupported Mach-O load command: ...

Rebuild with the matching cs-template. conda-ship accepts the bounded set of modern load commands used by its runtime templates and fails closed on unknown commands that might reference removed signature bytes.

Mach-O runtime template targets unsupported platform ...

Use a macOS template. iOS, Catalyst, simulator, and other Apple platform binaries are not accepted.

Mach-O code signature overlaps referenced file data

Rebuild the template with a linker-generated signature after all link-edit tables. conda-ship will not truncate data referenced by another load command.

Mach-O LC_MAIN entry point is outside executable file data

Rebuild the template as a normal modern macOS executable with one LC_MAIN entry point inside an executable segment.

Mach-O header has no room for a code signature command

An unsigned custom template needs at least 16 bytes between its load-command table and first file-backed section so native codesign can add LC_CODE_SIGNATURE. Use a linker-generated signature or reserve that space.

Mach-O code signature is not the final data in the file

Rebuild the custom template so its linker-generated signature is the final file data before conda-ship stamps it.

Mach-O load command table is too large

Rebuild the custom template with a normal thin Mach-O load-command table. conda-ship rejects tables larger than 1 MiB before allocating memory for them.

PE certificate table is not the final data in the file

Finalize the PE so its Security Directory certificate range ends at the physical end of the executable. Do not append data after Authenticode signing.

signed PE runtime data has no authenticated anchor section

Rebuild the Windows runtime with a matching conda-ship 0.9.0 builder and template, then apply Authenticode signing to the new artifact. A legacy signed PE overlay cannot be repaired by re-signing it. A Windows runtime from 0.8.0 or earlier also cannot consume a 0.9.0 executable update candidate, so an adopting installer or package manager must record external ownership during replacement. An installation that must remain directly managed needs a fresh install that does not reuse its old direct-install metadata.

signed PE templates must be unsigned before runtime stamping

Remove the existing Authenticode signature or rebuild an unsigned template. Sign the generated runtime after conda-ship adds its .cship anchor.

PE runtime template has data outside its declared sections

Rebuild the template without an existing overlay. conda-ship creates the runtime overlay itself and binds it to the signed .cship footer.

PE headers have no room for a runtime anchor section

Rebuild the template with at least one zero-filled 40-byte section-header slot before the first raw section.

PE runtime template machine ... with image kind ... does not match platform ...

Use a PE32 x86 template for win-32, a PE32+ x86_64 template for win-64, and a PE32+ ARM64 template for win-arm64.

Naming#

runtime name must start with an ASCII letter or digit

Use a filename-safe runtime name such as demo or demo-runtime.

delegate executable may only contain ASCII letters, digits, dots, dashes, and underscores

Use an executable name, not a path.

target triple may only contain ASCII letters, digits, dots, dashes, and underscores

Use a target triple string, not a path to a custom target file.

installer may only contain ASCII letters, digits, dots, dashes, and underscores

Use a short installer name such as homebrew, conda-package, or standalone.

Runtime Bootstrap#

runtime template, not a runnable runtime

Run a binary produced by cs build, not the generic runtime template.

runtime has no stamped lockfile

The binary is not a properly stamped runtime. Rebuild it with cs build.

offline bootstrap requires a stamped runtime lock

Offline bootstrap requires a runtime built by cs build.

runtime bundle path is not a directory

Point the runtime-specific _BUNDLE environment variable at a directory containing package archive files, not the compressed .bundle.tar.zst file itself.

Prefix Ownership#

refusing to bootstrap into existing non-empty path

Set CONDA_SHIP_PREFIX to another path or remove the existing directory yourself. Runtime-specific _PREFIX variables also work for names other than conda.

refusing to use unmanaged install path

The prefix does not contain ownership metadata for this runtime.

refusing to use install path with invalid bootstrap state

The internal installing marker is malformed or belongs to another runtime. A non-empty prefix without matching ownership state is rejected.