The unearth syntax is like this:

usage: unearth [-h] [--verbose] [--index-url URL] [--find-link LOCATION]
               [--trusted-host HOST] [--no-binary] [--only-binary]
               [--prefer-binary] [--all] [--link-only] [--download [DIR]]
               [--python-version PY_VER] [--abis ABIS] [--implementation IMPL]
               [--platforms PLATFORMS]
               requirement

I want to get the whole list of all wheel files that argostranslate version 1.9.6 is dependent on, because that’s possibly the last version of argos-translate that worked offline.

My first attempt:

$ unearth --find-link /usr/local/src/argos-translate/wheel_cache/ argostranslate=1.9.6
usage: unearth [-h] [--verbose] [--index-url URL] [--find-link LOCATION] [--trusted-host HOST] [--no-binary PACKAGE]
               [--only-binary PACKAGE] [--prefer-binary] [--all] [--link-only] [--download [DIR]]
               requirement
unearth: error: argument requirement: invalid Requirement value: 'argostranslate=1.9.6'

It does not accept my version constraint, despite examples using that kind of syntax. So I had to do this:

$ unearth --all --find-link /usr/local/src/argos-translate/wheel_cache/ argostranslate

It dumped metadata on all versions. I picked through the heap of output and found this:

  {
    "name": "argostranslate",
    "version": "1.9.6",
    "link": {
      "url": "https://files.pythonhosted.org/packages/01/f9/b472322ea3de4752bbec7fb2f169f057872390a9ff35f72a2142d06392ae/argostranslate-1.9.6-py3-none-any.whl",
      "comes_from": "https://pypi.org/simple/argostranslate/",
      "yank_reason": null,
      "requires_python": ">=3.5",
      "metadata": null
    }
  },
  {
    "name": "argostranslate",
    "version": "1.9.6",
    "link": {
      "url": "https://files.pythonhosted.org/packages/6b/fc/13aa57857bee34f62cb9018c5fd4ec56da714431689b62cca9dce30a8877/argostranslate-1.9.6.tar.gz",
      "comes_from": "https://pypi.org/simple/argostranslate/",
      "yank_reason": null,
      "requires_python": ">=3.5",
      "metadata": null
    }
  },

That just gives the wheel for the app itself, not the wheels it depends on. How can I get the full list of wheels that argostranslate is dependent on using unearth?

I should say that I supply the following option because I happen to already have all the wheel files:

--find-link /usr/local/src/argos-translate/wheel_cache/

That’s just to feed unearth as well as possible as an experiment. In fact it makes no difference if I omit the --find-link option. The end game is to be able to get this list in the future when I am starting from zero.

I might be looking to do something like --verbose --download --dry-run, but there is no --dry-run.

My wheel dir (/usr/local/src/argos-translate/wheel_cache/)

currently contains these files

annotated_types-0.7.0-py3-none-any.whl
argostranslate-1.10.0-py3-none-any.whl
blis-1.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
catalogue-2.0.10-py3-none-any.whl
certifi-2025.11.12-py3-none-any.whl
charset_normalizer-3.4.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
click-8.3.1-py3-none-any.whl
cloudpathlib-0.23.0-py3-none-any.whl
confection-0.1.5-py3-none-any.whl
ctranslate2-4.6.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
cymem-2.0.13-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
emoji-2.15.0-py3-none-any.whl
filelock-3.20.1-py3-none-any.whl
fsspec-2025.12.0-py3-none-any.whl
idna-3.11-py3-none-any.whl
jinja2-3.1.6-py3-none-any.whl
joblib-1.5.3-py3-none-any.whl
markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
mpmath-1.3.0-py3-none-any.whl
murmurhash-1.0.15-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
networkx-3.6.1-py3-none-any.whl
numpy-2.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
nvidia_cublas_cu12-12.8.4.1-py3-none-manylinux_2_27_x86_64.whl
nvidia_cuda_cupti_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl
nvidia_cuda_runtime_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl
nvidia_cufft_cu12-11.3.3.83-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
nvidia_cufile_cu12-1.13.1.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
nvidia_curand_cu12-10.3.9.90-py3-none-manylinux_2_27_x86_64.whl
nvidia_cusolver_cu12-11.7.3.90-py3-none-manylinux_2_27_x86_64.whl
nvidia_cusparse_cu12-12.5.8.93-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl
nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
nvidia_nvjitlink_cu12-12.8.93-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl
nvidia_nvshmem_cu12-3.3.20-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
nvidia_nvtx_cu12-12.8.90-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
packaging-25.0-py3-none-any.whl
preshed-3.0.12-cp311-cp311-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl
protobuf-6.33.2-cp39-abi3-manylinux2014_x86_64.whl
pydantic-2.12.5-py3-none-any.whl
pydantic_core-2.41.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
regex-2025.11.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
requests-2.32.5-py3-none-any.whl
sacremoses-0.1.1-py3-none-any.whl
sentencepiece-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
setuptools-80.9.0-py3-none-any.whl
smart_open-7.5.0-py3-none-any.whl
spacy-3.8.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
spacy_legacy-3.0.12-py2.py3-none-any.whl
spacy_loggers-1.0.5-py3-none-any.whl
srsly-2.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
stanza-1.10.1-py3-none-any.whl
sympy-1.14.0-py3-none-any.whl
thinc-8.3.10-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
torch-2.9.1-cp311-cp311-manylinux_2_28_x86_64.whl
tqdm-4.67.1-py3-none-any.whl
triton-3.5.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
typer_slim-0.21.0-py3-none-any.whl
typing_extensions-4.15.0-py3-none-any.whl
typing_inspection-0.4.2-py3-none-any.whl
urllib3-2.6.2-py3-none-any.whl
wasabi-1.1.3-py3-none-any.whl
weasel-0.4.3-py3-none-any.whl
wrapt-2.0.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl


I can run unearth on the prefixes of each of those – but that’s cheating, because in a future installation starting with nothing I will not know those packages or versions.