Installation steps

I am trying to install Prodigy on a linux server (ubuntu).

in the PRODIGY_README.html file under the installation section, it says:
The download link lets you choose between Prodigy wheels for all supported platforms. It also includes the downloadable API documentation. You can install Prodigy by pointing pip to the local path of the respective wheel. Note that Prodigy currently requires Python 3.5+ and the latest spaCy v2.1 .

does that mean i need to install spacy first?
if yes, what link should i use?
this one https://spacy.io/usage

if the one above,
should I use virtualenv or not?

are there any straight forward full installation steps document?

thank you

Hi! Prodigy is a Python library that depends on spaCy and when you install it from the wheel, it will be installed just like any other Python package. So spaCy and all its other dependencies will be installed automatically. (We just mention the spaCy version in the docs so it's clear which version it will be installing and using.) The only thing you have to install yourself are the spaCy models you want to use. For example:

python -m spacy download en_core_web_sm

That's up to you, really. I always recommend using a virtualenv, because it makes working with different Python environments so much easier and you can always delete it and start over if something goes wrong. But some people prefer other environment management solutions, and that's fine, too. Just set up your Prodigy environment however you normally set up your Python environments.

thank you.
how do i start the web interface?
i could not find a way in the installation guide

This depends on what you want to run – for example, a recipe to label named entitiies with a model in the loop, or a recipe to

The "First steps" guide is a good place to start:

If you check out the documentation or your PRODIGY_README.html, you'll also find more resources. If you prefer watching videos, check out or end-to-end video tutorials for different workflows.

1 Like

I am trying to run the following:
prodigy ner.teach my_set en_core_web_sm news_headlines.jsonl

and get the following error:
OSError: [Errno 99] Cannot assign requested address

in my “.prodigy/prodigy.json” conf file, i have configured the “host” tag to be the ip of the machine.
i also tried changing the ip to a dmain name.

still, i got the same error.

please advice

Are you running a Docker container? And are you sure the host neds to be the machine IP and not 0.0.0.0? From your report, it sounds like a similar quirk as described and solved here:

I am not running a docker, hence the link shared is not related.

If running a docker is advised, please share installation steps.

No, Docker isn’t particularly recommended – you can use it if you like using Docker, but you don’t have to.

Ultimately, the error isn’t specifically related to Prodigy – it typically means that the host isn’t configured correctly and usually happens if it’s mapped to localhost instead of 0.0.0.0.

mapping the host to localhost or 127.0.0.1 works as expected but since this is a headless machine i want ot use its public ip.
as i understand this is feasible.
am i missing something?

You should be able to just set the environment variable PRODIGY_HOST="0.0.0.0". You might also want to change the PRODIGY_PORT environment variable as well. Instead of environment variables, you can also configure these settings in the prodigy.json file. The readme has some more details about this as well.

If you try to advertise on port 80 of 0.0.0.0, one error you might encounter is that you need sudo to do that. This can be annoying if you’re running within a virtualenv, as sudo by default drops your environment values. Use sudo -E if this problem occurs.

verifying i understand you,

so you advise updating the PRODIGY.JSON, changing the host from the public IP of the machine to 0.0.0.0
like that?
{
“port”: 80,
“host”: “0.0.0.0”
}

or do you advise leaving the PRODIGY.JSON with the host configured to the public IP of the machine and setting a parameter named PRODIGY_HOST to be 0.0.0.0

?

thanks

Updating on Success :slight_smile:

I changed the PRODIGY.JSON to the following host/port

{
“port”: 80,
“host”: “0.0.0.0”
}

and it is working perfectly.
thank you

Hi,
I have the same prodigy.json but get a permission denied error when I start prodigy. It works well on port 8080. When I run it with sudo I get the following error: "sudo: prodigy: command not found"
I am using a conda environment

Does sudo python -m prodigy work?

Unfortunately not: /usr/bin/python: No module named prodigy

That sounds like Prodigy isn't installed in that environment – probably because you're running the system Python (/usr/bin/python) instead of your environment's Python?

I get the exact same error when I run it with the environment's Python. It also does not work if I use the sudo option

--preserve-env=PATH env

.
Would it somehow be possible to run it on port 80 without sudo?