Problem with CLI installation

hi there
I wanted to use the arkindex CLI but have this issue when installing:

floswald@PTL11077 ~> pip install arkindex-cli
Collecting arkindex-cli
  Downloading arkindex_cli-0.4.10-py3-none-any.whl.metadata (2.5 kB)
Collecting arkindex-export==0.2.0 (from arkindex-cli)
  Downloading arkindex_export-0.2.0-py3-none-any.whl.metadata (218 bytes)
Collecting minio==7.2.7 (from arkindex-cli)
  Downloading minio-7.2.7-py3-none-any.whl.metadata (6.4 kB)
Requirement already satisfied: python-dateutil==2.9.0.post0 in ./.pyenv/versions/3.13.5/lib/python3.13/site-packages (from arkindex-cli) (2.9.0.post0)
Collecting python-docx==1.1.2 (from arkindex-cli)
  Downloading python_docx-1.1.2-py3-none-any.whl.metadata (2.0 kB)
Collecting python-gnupg==0.5.4 (from arkindex-cli)
  Downloading python_gnupg-0.5.4-py2.py3-none-any.whl.metadata (2.0 kB)
Collecting python-magic==0.4.27 (from arkindex-cli)
  Downloading python_magic-0.4.27-py2.py3-none-any.whl.metadata (5.8 kB)
Collecting rich==13.7.1 (from arkindex-cli)
  Downloading rich-13.7.1-py3-none-any.whl.metadata (18 kB)
Collecting teklia-toolbox==0.1.11 (from arkindex-cli)
  Downloading teklia_toolbox-0.1.11-py3-none-any.whl.metadata (4.9 kB)
Collecting teklia-worker-configuration==0.1.0 (from arkindex-cli)
  Downloading teklia_worker_configuration-0.1.0-py3-none-any.whl.metadata (1.3 kB)
Collecting zstandard==0.23.0 (from arkindex-cli)
  Downloading zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl.metadata (3.0 kB)
Collecting peewee==3.17.0 (from arkindex-export==0.2.0->arkindex-cli)
  Downloading peewee-3.17.0.tar.gz (2.9 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.9/2.9 MB 42.4 MB/s  0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: certifi in ./.pyenv/versions/3.13.5/lib/python3.13/site-packages (from minio==7.2.7->arkindex-cli) (2025.6.15)
Requirement already satisfied: urllib3 in ./.pyenv/versions/3.13.5/lib/python3.13/site-packages (from minio==7.2.7->arkindex-cli) (2.5.0)
Collecting argon2-cffi (from minio==7.2.7->arkindex-cli)
  Using cached argon2_cffi-25.1.0-py3-none-any.whl.metadata (4.1 kB)
Collecting pycryptodome (from minio==7.2.7->arkindex-cli)
  Downloading pycryptodome-3.23.0-cp37-abi3-macosx_10_9_universal2.whl.metadata (3.4 kB)
Collecting typing-extensions (from minio==7.2.7->arkindex-cli)
  Using cached typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
Requirement already satisfied: six>=1.5 in ./.pyenv/versions/3.13.5/lib/python3.13/site-packages (from python-dateutil==2.9.0.post0->arkindex-cli) (1.17.0)
Collecting lxml>=3.1.0 (from python-docx==1.1.2->arkindex-cli)
  Downloading lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl.metadata (3.6 kB)
Collecting markdown-it-py>=2.2.0 (from rich==13.7.1->arkindex-cli)
  Downloading markdown_it_py-4.0.0-py3-none-any.whl.metadata (7.3 kB)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in ./.pyenv/versions/3.13.5/lib/python3.13/site-packages (from rich==13.7.1->arkindex-cli) (2.19.2)
Collecting arkindex-client==1.1.5 (from teklia-toolbox==0.1.11->arkindex-cli)
  Downloading arkindex_client-1.1.5-py3-none-any.whl.metadata (1.1 kB)
Collecting lxml>=3.1.0 (from python-docx==1.1.2->arkindex-cli)
  Downloading lxml-5.2.1.tar.gz (3.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.7/3.7 MB 32.9 MB/s  0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
s  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: PyYAML>=5.4.1 in ./.pyenv/versions/3.13.5/lib/python3.13/site-packages (from teklia-toolbox==0.1.11->arkindex-cli) (6.0.2)
Requirement already satisfied: requests>=2.30 in ./.pyenv/versions/3.13.5/lib/python3.13/site-packages (from arkindex-client==1.1.5->teklia-toolbox==0.1.11->arkindex-cli) (2.32.4)
Collecting tenacity>=9.1.0 (from arkindex-client==1.1.5->teklia-toolbox==0.1.11->arkindex-cli)
  Downloading tenacity-9.1.2-py3-none-any.whl.metadata (1.2 kB)
Collecting typesystem==0.4.1 (from arkindex-client==1.1.5->teklia-toolbox==0.1.11->arkindex-cli)
  Downloading typesystem-0.4.1-py3-none-any.whl.metadata (778 bytes)
Collecting yamale==6.0.0 (from teklia-worker-configuration==0.1.0->arkindex-cli)
  Downloading yamale-6.0.0-py3-none-any.whl.metadata (22 kB)
Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich==13.7.1->arkindex-cli)
  Using cached mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
Requirement already satisfied: charset_normalizer<4,>=2 in ./.pyenv/versions/3.13.5/lib/python3.13/site-packages (from requests>=2.30->arkindex-client==1.1.5->teklia-toolbox==0.1.11->arkindex-cli) (3.4.2)
Requirement already satisfied: idna<4,>=2.5 in ./.pyenv/versions/3.13.5/lib/python3.13/site-packages (from requests>=2.30->arkindex-client==1.1.5->teklia-toolbox==0.1.11->arkindex-cli) (3.10)
Collecting argon2-cffi-bindings (from argon2-cffi->minio==7.2.7->arkindex-cli)
  Using cached argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_11_0_arm64.whl.metadata (7.4 kB)
Collecting cffi>=1.0.1 (from argon2-cffi-bindings->argon2-cffi->minio==7.2.7->arkindex-cli)
  Using cached cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl.metadata (2.6 kB)
Collecting pycparser (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->minio==7.2.7->arkindex-cli)
  Using cached pycparser-2.23-py3-none-any.whl.metadata (993 bytes)
Downloading arkindex_cli-0.4.10-py3-none-any.whl (133 kB)
Downloading arkindex_export-0.2.0-py3-none-any.whl (16 kB)
Downloading minio-7.2.7-py3-none-any.whl (93 kB)
Downloading python_docx-1.1.2-py3-none-any.whl (244 kB)
Downloading python_gnupg-0.5.4-py2.py3-none-any.whl (21 kB)
Downloading python_magic-0.4.27-py2.py3-none-any.whl (13 kB)
Downloading rich-13.7.1-py3-none-any.whl (240 kB)
Downloading teklia_toolbox-0.1.11-py3-none-any.whl (12 kB)
Downloading arkindex_client-1.1.5-py3-none-any.whl (32 kB)
Downloading teklia_worker_configuration-0.1.0-py3-none-any.whl (12 kB)
Downloading typesystem-0.4.1-py3-none-any.whl (28 kB)
Downloading yamale-6.0.0-py3-none-any.whl (57 kB)
Downloading zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl (633 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 633.4/633.4 kB 17.0 MB/s  0:00:00
Downloading markdown_it_py-4.0.0-py3-none-any.whl (87 kB)
Using cached mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Downloading tenacity-9.1.2-py3-none-any.whl (28 kB)
Using cached typing_extensions-4.15.0-py3-none-any.whl (44 kB)
Using cached argon2_cffi-25.1.0-py3-none-any.whl (14 kB)
Using cached argon2_cffi_bindings-25.1.0-cp39-abi3-macosx_11_0_arm64.whl (31 kB)
Using cached cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl (181 kB)
Using cached pycparser-2.23-py3-none-any.whl (118 kB)
Downloading pycryptodome-3.23.0-cp37-abi3-macosx_10_9_universal2.whl (2.5 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.5/2.5 MB 13.6 MB/s  0:00:00
Building wheels for collected packages: peewee, lxml
  Building wheel for peewee (pyproject.toml) ... done
  Created wheel for peewee: filename=peewee-3.17.0-py3-none-any.whl size=135807 sha256=9d980bd69ceb0efc581e9f1ef525632b8c12efb92b287c4d5f9fe189e6bda317
  Stored in directory: /Users/floswald/Library/Caches/pip/wheels/36/e0/cf/19a6133187b80ef6d769978c73839e185187d71308e666aa1a
  Building wheel for lxml (pyproject.toml) ... done
  Created wheel for lxml: filename=lxml-5.2.1-cp313-cp313-macosx_15_0_arm64.whl size=1606956 sha256=50b217defb50632967ae6a57bc972d00fd3c9e1244101c26c31e4f38d4dbd1bc
  Stored in directory: /Users/floswald/Library/Caches/pip/wheels/ba/71/28/221adfc46c748ecf1b37ec752a615f1044e00f28a1e3a7b009
Successfully built peewee lxml
Installing collected packages: python-gnupg, peewee, zstandard, yamale, typing-extensions, typesystem, tenacity, python-magic, pycryptodome, pycparser, mdurl, lxml, arkindex-export, teklia-worker-configuration, python-docx, markdown-it-py, cffi, arkindex-client, teklia-toolbox, rich, argon2-cffi-bindings, argon2-cffi, minio, arkindex-cli
Successfully installed argon2-cffi-25.1.0 argon2-cffi-bindings-25.1.0 arkindex-cli-0.4.10 arkindex-client-1.1.5 arkindex-export-0.2.0 cffi-2.0.0 lxml-5.2.1 markdown-it-py-4.0.0 mdurl-0.1.2 minio-7.2.7 peewee-3.17.0 pycparser-2.23 pycryptodome-3.23.0 python-docx-1.1.2 python-gnupg-0.5.4 python-magic-0.4.27 rich-13.7.1 teklia-toolbox-0.1.11 teklia-worker-configuration-0.1.0 tenacity-9.1.2 typesystem-0.4.1 typing-extensions-4.15.0 yamale-6.0.0 zstandard-0.23.0
floswald@PTL11077 ~> arkindex login
╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│ /Users/floswald/.pyenv/versions/3.13.5/bin/arkindex:3 in <module>            │
│                                                                              │
│   1 #!/Users/floswald/.pyenv/versions/3.13.5/bin/python3.13                  │
│   2 import sys                                                               │
│ ❱ 3 from arkindex_cli.cli import main                                        │
│   4 if __name__ == '__main__':                                               │
│   5 │   if sys.argv[0].endswith('.exe'):                                     │
│   6 │   │   sys.argv[0] = sys.argv[0][:-4]                                   │
│                                                                              │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/arkindex │
│ _cli/cli.py:14 in <module>                                                   │
│                                                                              │
│   11 from arkindex_cli.commands.models import add_models_parser              │
│   12 from arkindex_cli.commands.secrets import add_secrets_parser            │
│   13 from arkindex_cli.commands.selection import add_selection_parser        │
│ ❱ 14 from arkindex_cli.commands.upload import add_upload_parser              │
│   15 from arkindex_cli.commands.worker import add_worker_parser              │
│   16                                                                         │
│   17                                                                         │
│                                                                              │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/arkindex │
│ _cli/commands/upload/__init__.py:2 in <module>                               │
│                                                                              │
│    1 from arkindex_cli.commands.upload.alto import add_alto_parser           │
│ ❱  2 from arkindex_cli.commands.upload.data_file import add_data_file_parser │
│    3 from arkindex_cli.commands.upload.iiif import add_iiif_parser           │
│    4 from arkindex_cli.commands.upload.mets import add_mets_parser           │
│    5 from arkindex_cli.commands.upload.minio_client import add_minio_client_ │
│                                                                              │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/arkindex │
│ _cli/commands/upload/data_file.py:7 in <module>                              │
│                                                                              │
│     4                                                                        │
│     5 from rich.progress import Progress                                     │
│     6                                                                        │
│ ❱   7 import magic                                                           │
│     8 from arkindex_cli.auth import Profiles                                 │
│     9 from arkindex_cli.uploads import MultipartUpload                       │
│    10                                                                        │
│                                                                              │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/magic/__ │
│ init__.py:209 in <module>                                                    │
│                                                                              │
│   206 │   return m.from_descriptor(fd)                                       │
│   207                                                                        │
│   208 from . import loader                                                   │
│ ❱ 209 libmagic = loader.load_lib()                                           │
│   210                                                                        │
│   211 magic_t = ctypes.c_void_p                                              │
│   212                                                                        │
│                                                                              │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/magic/lo │
│ ader.py:49 in load_lib                                                       │
│                                                                              │
│   46 │     pass                                                              │
│   47   else:                                                                 │
│   48 │   # It is better to raise an ImportError since we are importing magic │
│ ❱ 49 │   raise ImportError('failed to find libmagic.  Check your installatio │
│   50                                                                         │
│   51                                                                         │
╰──────────────────────────────────────────────────────────────────────────────╯
ImportError: failed to find libmagic.  Check your installation
floswald@PTL11077 ~ [1]> pip install libmagiv
ERROR: Could not find a version that satisfies the requirement libmagiv (from versions: none)
ERROR: No matching distribution found for libmagiv
floswald@PTL11077 ~ [1]> pip install libmagic
Collecting libmagic
  Downloading libmagic-1.0.tar.gz (3.7 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: libmagic
  Building wheel for libmagic (pyproject.toml) ... done
  Created wheel for libmagic: filename=libmagic-1.0-py3-none-any.whl size=4311 sha256=e71a18a50939b112b4c2d97b764c6278f2c742767e9a18c666a5074a8d1dc9dc
  Stored in directory: /Users/floswald/Library/Caches/pip/wheels/dd/06/e7/972d8dfb613a9a618e0c2314d63c1b625a51cdb7af785811dd
Successfully built libmagic
Installing collected packages: libmagic
Successfully installed libmagic-1.0
floswald@PTL11077 ~> arkindex login
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /Users/floswald/.pyenv/versions/3.13.5/bin/arkindex:3 in <module>                                │
│                                                                                                  │
│   1 #!/Users/floswald/.pyenv/versions/3.13.5/bin/python3.13                                      │
│   2 import sys                                                                                   │
│ ❱ 3 from arkindex_cli.cli import main                                                            │
│   4 if __name__ == '__main__':                                                                   │
│   5 │   if sys.argv[0].endswith('.exe'):                                                         │
│   6 │   │   sys.argv[0] = sys.argv[0][:-4]                                                       │
│                                                                                                  │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/arkindex_cli/cli.py:14 in    │
│ <module>                                                                                         │
│                                                                                                  │
│   11 from arkindex_cli.commands.models import add_models_parser                                  │
│   12 from arkindex_cli.commands.secrets import add_secrets_parser                                │
│   13 from arkindex_cli.commands.selection import add_selection_parser                            │
│ ❱ 14 from arkindex_cli.commands.upload import add_upload_parser                                  │
│   15 from arkindex_cli.commands.worker import add_worker_parser                                  │
│   16                                                                                             │
│   17                                                                                             │
│                                                                                                  │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/arkindex_cli/commands/upload │
│ /__init__.py:2 in <module>                                                                       │
│                                                                                                  │
│    1 from arkindex_cli.commands.upload.alto import add_alto_parser                               │
│ ❱  2 from arkindex_cli.commands.upload.data_file import add_data_file_parser                     │
│    3 from arkindex_cli.commands.upload.iiif import add_iiif_parser                               │
│    4 from arkindex_cli.commands.upload.mets import add_mets_parser                               │
│    5 from arkindex_cli.commands.upload.minio_client import add_minio_client_parser               │
│                                                                                                  │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/arkindex_cli/commands/upload │
│ /data_file.py:7 in <module>                                                                      │
│                                                                                                  │
│     4                                                                                            │
│     5 from rich.progress import Progress                                                         │
│     6                                                                                            │
│ ❱   7 import magic                                                                               │
│     8 from arkindex_cli.auth import Profiles                                                     │
│     9 from arkindex_cli.uploads import MultipartUpload                                           │
│    10                                                                                            │
│                                                                                                  │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/magic/__init__.py:209 in     │
│ <module>                                                                                         │
│                                                                                                  │
│   206 │   return m.from_descriptor(fd)                                                           │
│   207                                                                                            │
│   208 from . import loader                                                                       │
│ ❱ 209 libmagic = loader.load_lib()                                                               │
│   210                                                                                            │
│   211 magic_t = ctypes.c_void_p                                                                  │
│   212                                                                                            │
│                                                                                                  │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/magic/loader.py:49 in        │
│ load_lib                                                                                         │
│                                                                                                  │
│   46 │     pass                                                                                  │
│   47   else:                                                                                     │
│   48 │   # It is better to raise an ImportError since we are importing magic module              │
│ ❱ 49 │   raise ImportError('failed to find libmagic.  Check your installation')                  │
│   50                                                                                             │
│   51                                                                                             │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
ImportError: failed to find libmagic.  Check your installation
floswald@PTL11077 ~ [1]> pip uninstall python-magic
Found existing installation: python-magic 0.4.27
Uninstalling python-magic-0.4.27:
  Would remove:
    /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/magic/*
    /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/python_magic-0.4.27.dist-info/*
Proceed (Y/n)? Y
  Successfully uninstalled python-magic-0.4.27

floswald@PTL11077 ~ [1]> pip install python-magic
Collecting python-magic
  Using cached python_magic-0.4.27-py2.py3-none-any.whl.metadata (5.8 kB)
Using cached python_magic-0.4.27-py2.py3-none-any.whl (13 kB)
Installing collected packages: python-magic
Successfully installed python-magic-0.4.27


floswald@PTL11077 ~> arkindex login
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /Users/floswald/.pyenv/versions/3.13.5/bin/arkindex:3 in <module>                                │
│                                                                                                  │
│   1 #!/Users/floswald/.pyenv/versions/3.13.5/bin/python3.13                                      │
│   2 import sys                                                                                   │
│ ❱ 3 from arkindex_cli.cli import main                                                            │
│   4 if __name__ == '__main__':                                                                   │
│   5 │   if sys.argv[0].endswith('.exe'):                                                         │
│   6 │   │   sys.argv[0] = sys.argv[0][:-4]                                                       │
│                                                                                                  │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/arkindex_cli/cli.py:14 in    │
│ <module>                                                                                         │
│                                                                                                  │
│   11 from arkindex_cli.commands.models import add_models_parser                                  │
│   12 from arkindex_cli.commands.secrets import add_secrets_parser                                │
│   13 from arkindex_cli.commands.selection import add_selection_parser                            │
│ ❱ 14 from arkindex_cli.commands.upload import add_upload_parser                                  │
│   15 from arkindex_cli.commands.worker import add_worker_parser                                  │
│   16                                                                                             │
│   17                                                                                             │
│                                                                                                  │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/arkindex_cli/commands/upload │
│ /__init__.py:2 in <module>                                                                       │
│                                                                                                  │
│    1 from arkindex_cli.commands.upload.alto import add_alto_parser                               │
│ ❱  2 from arkindex_cli.commands.upload.data_file import add_data_file_parser                     │
│    3 from arkindex_cli.commands.upload.iiif import add_iiif_parser                               │
│    4 from arkindex_cli.commands.upload.mets import add_mets_parser                               │
│    5 from arkindex_cli.commands.upload.minio_client import add_minio_client_parser               │
│                                                                                                  │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/arkindex_cli/commands/upload │
│ /data_file.py:7 in <module>                                                                      │
│                                                                                                  │
│     4                                                                                            │
│     5 from rich.progress import Progress                                                         │
│     6                                                                                            │
│ ❱   7 import magic                                                                               │
│     8 from arkindex_cli.auth import Profiles                                                     │
│     9 from arkindex_cli.uploads import MultipartUpload                                           │
│    10                                                                                            │
│                                                                                                  │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/magic/__init__.py:209 in     │
│ <module>                                                                                         │
│                                                                                                  │
│   206 │   return m.from_descriptor(fd)                                                           │
│   207                                                                                            │
│   208 from . import loader                                                                       │
│ ❱ 209 libmagic = loader.load_lib()                                                               │
│   210                                                                                            │
│   211 magic_t = ctypes.c_void_p                                                                  │
│   212                                                                                            │
│                                                                                                  │
│ /Users/floswald/.pyenv/versions/3.13.5/lib/python3.13/site-packages/magic/loader.py:49 in        │
│ load_lib                                                                                         │
│                                                                                                  │
│   46 │     pass                                                                                  │
│   47   else:                                                                                     │
│   48 │   # It is better to raise an ImportError since we are importing magic module              │
│ ❱ 49 │   raise ImportError('failed to find libmagic.  Check your installation')                  │
│   50                                                                                             │
│   51                                                                                             │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
ImportError: failed to find libmagic.  Check your installation

Hello @floswald ,

It looks like your system does not have libmagic installed.

If you’re using a debian-based Linux distribution, you can try apt-get install libmagic

indeed - I thought that pip install python-magic took care of that. on my mac this worked

brew install libmagic