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