FileNotFoundError pickle file

Hi,
My project here https://share.streamlit.io/damienld/rakuteam/main/Streamlit_rakuten/demo_rakuten.py works perfectly locall under a virtual environment with python 3.8.
But when I upload it here it says
FileNotFoundError: This app has encountered an error. The original error message is redacted to prevent data leaks. Full error details have been recorded in the logs.
File “/app/rakuteam/Streamlit_rakuten/creation_features.py”, line 28, in load_keywords_fromfile
with open(‘dico_keywords_tfidf_15.pkl’, ‘rb’) as handle:

How Can I check if my file’dico_keywords_tfidf_15.pkl’ was correctly uploaded? Is it a problem with pickle (but I don’t have any issue locally …)
Thans

Did you upload dico_keywords_tfidf_15.pkl in your github repo?

If you use with open(‘dico_keywords_tfidf_15.pkl’, ‘rb’) as handle:, then dico_keywords_tfidf_15.pkl should be in the relative path of where creation_features.py is.
Please share the repo if you still struggle.

The app is [demo_rakuten.py] and the .pkl is in the same directory
Thanks!

Could anyone help on this please? Thanks

1 Like

Hi @Dam1006, :wave:

Welcome to the community! :partying_face:

  1. Change the filepath to the pickle file on line 28 of creation_features.py to:
with open('Streamlit_rakuten/dico_keywords_tfidf_15.pkl', 'rb') as handle: 
  1. Also, replace opencv-python==4.5.3.56 with opencv-python-headless==4.5.3.56 to avoid:

    ImportError: libGL.so.1: cannot open shared object file: No such file or directory
    
  2. Go through all your Python scripts and make sure to prepend Streamlit_rakuten/ to the paths of any files you open in them and just ensure you have the correct filepaths. e.g. Cnnimage_predict("Streamlit_rakuten/test2.jpg")

Best, :balloon:
Snehan

Thanks Snehan! It s much better but I have another issue how do I manage a file which is managed by GIT LFS (because it s 225Mo) ?
Thanks

Hello, I was having a similar deploying a Streamlit app. At first it was issues with requirements files for cv2, but I think that is sorted, but now I am getting this error:


ModuleNotFoundError: This app has encountered an error. The original error message is redacted to prevent data leaks. Full error details have been recorded in the logs.

Traceback:

File “/home/appuser/venv/lib/python3.7/site-packages/streamlit/script_runner.py”, line 354, in _run_script
exec(code, module.dict)File “/app/smile_project/UI.py”, line 56, in
CNN_model = pickle.load(pickle_file)

For some context, I have a Keras object class ‘keras.engine.sequential.Sequential’ which I have created as a .pkl file and have it in the same directory as my python files. It works locally when I run the program, but does not work at deployment time. Leading up to this step there were also errors saying that I was missing Keras and tensor flow, which I added into my requirments.txt file.

I also did some snooping around Streamlit other Streamlit forums and found that sometimes the pickle error can occur when the model that you pickled was exported when using a different version of python than the one being used in Streamlit. I checked this, and this was the case, so I took the model out of google Colab, I trained it in Atom on my local python environment which is running python 3.7 and pickled it from there, and I still got the same error, when trying to deploy it on Streamlit. It works locally still but is still giving the same error.

File “/app/smile_project/UI.py”, line 47, in
with open(“CNN_Model_p7.pkl”, “rb”) as pickle_file:

Here are my requirments.txt files:

opencv-python-headless
matplotlib==3.5.0
numpy==1.18.1
opencv_python==4.5.4.58
pandas==0.24.2
streamlit==1.2.0
streamlit_drawable_canvas==0.8.0
tensorflow==2.3.1
Keras==2.4.3

Here are my packages.txt files:
freeglut3-dev
libgtk2.0-dev
libgl1-mesa-glx

Here is my repo

Thanks in advance!

  • Paul

I seem to be having the same problem.

ModuleNotFoundError: This app has encountered an error. The original error message is redacted to prevent data leaks. Full error details have been recorded in the logs (if you're on Streamlit Cloud, click on 'Manage app' in the lower right of your app).

Traceback:

File “/home/appuser/venv/lib/python3.9/site-packages/streamlit/runtime/scriptrunner/script_runner.py”, line 562, in _run_script
exec(code, module.dict)File “/app/traffic_app/app.py”, line 17, in
lgb = pickle.load(pickle_in)

The Code:

pickle_in = open('traffic_predictor.pkl', 'rb')
lgb = pickle.load(pickle_in)

I also tried @snehankekre suggesting to add the path:

pickle_in = open('Traffic_App/traffic_predictor.pkl', 'rb')
lgb = pickle.load(pickle_in)

and I got another error saying file not found