cannot import name 'ControllerComponentDict' from 'prodigy'

While following the tutorial 'Prodigy-PDF for PDF annotation and OCR - Prodigy Shorts' using a conda environment on a MAC M1 I got the error "ImportError: cannot import name 'ControllerComponentDict' from 'prodigy'". I installed prodigy with 'python -m' and used the command "python -m prodigy pdf.image.manual bet /Users/rb/ --label number, date, title".
I check the installed packages with "python -m pip list" and found that there is no package 'ControllerComponentDict'.

How to install that?

Hi @Ralf!

Thanks for your question. Just curious, what version of Prodigy are you using?

Can you provide prodigy stats?

I think many of the new plugins use the latest version of Prodigy, so I'm wondering if you're trying to use an older version.

THX for the prompt reply!
I have prodigy 1.11.8 and prodigy-pdf 0.2.0 installed.

Can you try to upgrade to Prodigy v1.12.7? We updated a new controller in v1.12.0 so I suspect that'll help.

I looked up your license and it seems like 12 months of free upgrades did expire; however, as a thank you to all of our users, we provided v1.12.x version as one-time free extension to all users when we released it. We sent an email in July about this free upgrade.

You can use the old pip install with your license key. But we also updated how we provide wheel files, now using and using your license key as Username. The nice thing with this approach is it'll show you all past versions of Prodigy you're eligible for (not just the most recent).

One disclaimer: all of the new plugins are developed with the most current of Prodigy. We're trying to avoid issues like this but we can't promise backward support. So there's a chance even with v1.12.7, you may find this (or other plugins) have some component that's on a more recent version of Prodigy.

I tried --upgrade prodigy but did not got any updates (so it is still 1.11.8). My phyton version is 3.10. Is there a way to install a specific version, not just the last stable one?

Yes! Go here:

Then type in your License Key as username.

Choose the wheel file you want.

This is why we moved to this new server as now users can install any version of Prodigy they're eligible for (not just the most recent).

Then use these instructions to install the wheel file.

In general, I would recommend installing it on a new venv. Python 3.10 should be fine. Your annotations will be okay even if you upgrade if you're still pointing to the same location where you DB is (e.g., PRODIGY_HOME location in prodigy stats).

Hope this helps!

I downloaded the wheel prodigy-1.12.7-cp310-cp310-macosx_11_0_arm64.whl, as far as I have a MacBook Air with M1 and the current macOS Sonoma 14.0.
pip complains that it is not the right wheel for the platform. Which one would be better suited?

You may want to try prodigy-1.12.7-cp310-cp310-macosx_11_0_x86_64.whl.

You can confirm by running prodigy stats and then looking at your Platform.

$ prodigy stats 
============================== ✨  Prodigy Stats ==============================

Version          1.13.1                        
Location         /usr/local/lib/python3.9/site-packages/prodigy
Prodigy Home     /Users/rhymenoceros/.prodigy  
Platform         macOS-14.0-x86_64-i386-64bit  
Python Version   3.9.17                        
Spacy Version    3.5.2                         
Database Name    SQLite                        
Database Id      sqlite                        
Total Datasets   23                            
Total Sessions   103   

For example, I'm on a MacBook with 14.0 too.

You can also double check by running:

$ import distutils
$ distutils.util.get_platform()

I got it working after completely uninstalling anaconda, installing miniconda for the M1 and installing the corresponding prodigy version 12.7 for python 3.10 and MacOS for ARM64:)
THX for the support!!!

1 Like