Error installing requirements when deploying, installation on local machine works fine

I’m trying to deploy an app from this repository but I’m getting an Error installing requirements issue when deploying. The app is actually up and running via Heroku here but I want to try streamlit share.

The error message is below. When I run conda env update -n <env_name> --file projects/pitchcast/environment.yml locally I get no problem.

[     UTC     ] Logs for dafriedman97-pitchcast-appapp-mdo5j8.streamlit.app/
[17:13:42] 🚀 Starting up repository: 'pitchcast', branch: 'main', main module: 'app/app.py'
[17:13:42] 🐙 Cloning repository...
[17:13:43] 🐙 Cloning into '/app/pitchcast'...
[17:13:43] 🐙 Cloned repository!
[17:13:43] 🐙 Pulling code changes from Github...
[17:13:44] 📦 Processing dependencies...
Collecting package metadata (repodata.json): ...working... [2023-01-18 17:15:11.761736] done
Solving environment: [2023-01-18 17:15:11.763305] ...working... [2023-01-18 17:21:30.585098] bash: line 3:    16 Killed                  /home/appuser/.conda/bin/conda env update -n base --file environment.yml
[17:21:31] ❗️ installer returned a non-zero exit code
[17:21:31] ❗️ Error during processing dependencies! Please fix the error and push an update, or try restarting the app.
[17:23:02] ❗️ Streamlit server consistently failed status checks
[17:23:02] ❗️ Please fix the errors, push an update to the git repo, or reboot the app.

Streamlit Cloud won’t use both the environment and requirements file. I would eliminate the environment file and just use requirements.txt by itself. (And it may be necessary to reboot the app after messing with the environment to give it an encouraging push.)

Thanks @mathcatsand. I tried removing requirements.txt (I added that for the Heroku app–environment.yml is what I really want) but I’m still getting an issue

[18:39:41] 🖥 Provisioning machine...

[18:39:42] 🚀 Starting up repository: 'pitchcast', branch: 'share', main module: 'app/app.py'

[18:39:42] 🐙 Cloning repository...

[18:39:44] 🐙 Cloning into '/app/pitchcast'...

[18:39:44] 🐙 Cloned repository!

[18:39:44] 🐙 Pulling code changes from Github...

[18:39:45] 📦 Processing dependencies...

[18:39:46] 🎛 Preparing system...

[18:39:46] ⛓ Spinning up manager process...

Collecting package metadata (repodata.json): ...working... [2023-01-18 18:41:26.112493] done

[18:47:48] ❗️ installer returned a non-zero exit code

[18:47:48] ❗️ Error during processing dependencies! Please fix the error and push an update, or try restarting the app.

[18:49:22] ❗️ Streamlit server consistently failed status checks

[18:49:22] ❗️ Please fix the errors, push an update to the git repo, or reboot the app.

Did this in a new branch called share, btw.

Any ideas? Thanks

Can you try using the requirements.txt for Streamlit Cloud, just to check if it works? There are several threads where people had issues making Streamlit Cloud process the environment.yml file as it does appear to be a bit more tempermental. It appears your environment file is installing a few more things than your requirements file and also some different versions, so either way I’d trim things down to a bare minimum for what’s being passed to Streamlit Cloud.

So if you can confirm your requirements file can work, I’d try to emulate it in the environment file next:

Your requirements.txt is:

matplotlib==3.6.0
numpy==1.23.4
pandas==1.5.1
seaborn==0.12.1
streamlit==1.11.0
tensorflow-cpu==2.10.0

So maybe remove the extra stuff from your environment file and reduce it to something like:

channles:
  - conda-forge
dependencies:
  - matplotlib==3.6.0
  - numpy==1.23.4
  - pandas==1.5.1
  - seaborn==0.12.1
  - streamlit==1.11.0
  - tensorflow-cpu==2.10.0

(I don’t use the environment.yml file as much myself, so I’m not sure I’d recognize a suspicious line on sight.)

Trying that. It’s been stuck on ⛓ Spinning up manager process... for about 20 minutes. Will keep you posted. Thanks!

@mathcatsand I deleted the app and restarted and it worked! So the solution was to just have requirements.txt rather than environment.yml and requirements.txt

One open question though: I’m wondering if there is a way to keep environment.yml in the repo (and have Streamlit Cloud ignore it). Essentially I want requirements.txt for Streamlit but environment.yml for the project as a whole.

I believe Streamlit just uses the first one it finds and I’m not sure how to command it from the Streamlit Cloud side to do otherwise. After you confirmed that the requirements.txt file works, did you iterate back and see if you could get the simpler version of the environment.yml file to work?

Could you keep separate branches for the deployment, or could you try from your other deployment to do something tricky? Make it do something like accept a different name than environments.yml so Streamlit Cloud wouldn’t recognize it as an environment setup file?

Getting the same original issue when I use the simpler environment.yml

Collecting package metadata (repodata.json): ...working... [2023-01-19 02:19:21.849859] done

Solving environment: ...working... [2023-01-19 02:23:34.173510] bash: line 3:    16 Killed                  /home/appuser/.conda/bin/conda env update -n base --file environment.yml

[02:23:35] ❗️ installer returned a non-zero exit code

[02:23:35] ❗️ Error during processing dependencies! Please fix the error and push an update, or try restarting the app.

[02:25:05] ❗️ Streamlit server consistently failed status checks

[02:25:05] ❗️ Please fix the errors, push an update to the git repo, or reboot the app.

I was able to deploy an app to Streamlit Cloud with this environment.yml file. See if you can start from here:

name: myenv
dependencies:
- pip
- pip:
  - matplotlib==3.6.0
  - numpy==1.23.4
  - pandas==1.5.1
  - seaborn==0.12.1
  - streamlit==1.11.0
  - tensorflow-cpu==2.10.0

(You may need to specify the version of protobuf, by the way. Seems like Streamlit and tensorflow-cpu will be picky on that point.)

Looks like the same errors as before… how do I specify the version of protobuf? (that’s a new term to me)

Just to check, did you manually reboot the app after changing the environment file? I know it was correctly parsed on a simple app that just imports matplotlib to test the environment. Hmmm…

Protobuf is just another package that you can set, same matplotlib, numpy, pandas, etc.

I think it’s something like

protobuf<3.20,>=3.9.2

so you could try pinning it at a specific 3.19.x version.

I have enviroment.yml file that I need for local deployment:

name: FollowRelion
channels:
  - conda-forge
  - defaults
dependencies:
  - python=3.11
  - pip
  - pip:
    - numpy
    - pandas
    - mrcfile
    - scikit-image
    - scipy
    - matplotlib
    - seaborn
    - pillow
    - plotly
    - streamlit
    - pyvis
    - gemmi
    - stqdm
    - streamlit_plotly_events

As much it works locally, streamlit shows an error when deploying:


[18:56:02] ❗️ installer returned a non-zero exit code

[18:56:02] ❗️ Error during processing dependencies! Please fix the error and push an update, or try restarting the app.```

I also have requirements.txt in my repo, but it seems unrecognized. Any suggestions?