Streamlit:如何将python包正确添加到requirements.txt?

Streamlit:如何将python包正确添加到requirements.txt?,requirements.txt,streamlit,Requirements.txt,Streamlit,我想尝试Streamlight共享()。这是我的本地工作代码: streamlit_app.py import pandas as pd import streamlit as st from PIL import Image from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Model df = pd.read_csv(&quo

我想尝试Streamlight共享()。这是我的本地工作代码:

streamlit_app.py

import pandas as pd
import streamlit as st

from PIL import Image
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

# Model
df = pd.read_csv("IRIS.csv")

X = df.drop(columns=["species"])
y = df["species"]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

rf = RandomForestClassifier()
rf.fit(X_train, y_train)

# Streamlit
st.header("Iris Classification")

image = Image.open("iris.jpg")
st.image(image, use_column_width=True, output_format="jpg")

st.write("Please insert values, to get Iris class prediction")

SepalLengthCm = st.slider('SepalLengthCm:', 2.0, 6.0)
SepalWidthCm = st.slider('SepalWidthCm:', 0.0, 5.0)
PetalLengthCm = st.slider('PetalLengthCm',0.0, 3.0)
PetalWidthCm = st.slider('PetalWidthCm:', 0.0, 2.0)
data = {'SepalLengthCm': SepalLengthCm,
        'SepalWidthCm': SepalWidthCm,
        'PetalLengthCm': PetalLengthCm,
        'PetalWidthCm': PetalWidthCm}

features = pd.DataFrame(data, index=[0])
prediction = rf.predict(features)
percentages = rf.predict_proba(features)

st.subheader("Prediction")
st.write(prediction[0])

st.subheader("Percentages")
st.write("Iris-setosa: ", percentages[0][0]*100)
st.write("Iris-versicolor: ", percentages[0][1]*100)
st.write("Iris-virginica: ", percentages[0][2]*100)
现在,为了获得requirements.txt(这是Streamlight共享所必需的),我执行了以下操作:

  • 使用conda Create--name streamlit test python=3.7创建新环境
  • pip安装streamlight
  • pip安装sklearn
  • 可选:
    streamlit运行streamlit_app.py
    在本地成功运行应用程序
  • pip freeze>requirements.txt
当我通过Streamlight共享部署应用程序时,它会显示“ModuleNotFoundError:没有名为“sklearn”的模块”(第5行)。实际上,您应该能够亲自看到这一点:

检查requirements.txt会发现sklearn是这样出现的
sklearn==0.0

这是Streamlight共享的日志:


[client] Connecting...
[manager] Starting up for owner: 'juliangermek', repository: 'streamit_test', branch: 'master', main module: 'streamlit_app.py'
[manager] Cloning repository ...
[manager] Cloning into 'streamit_test'...

[manager] Cloned repository!
[manager] Processing dependencies ...
Requirement already satisfied: altair==4.1.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 3)) (4.1.0)
ERROR: Could not find a version that satisfies the requirement anaconda-client==1.7.2
ERROR: No matching distribution found for anaconda-client==1.7.2
[manager] Processed dependencies!

  You can now view your Streamlit app in your browser.

  Network URL: http://10.12.4.85:8501
  External URL: [2021-01-22 07:46:22.016741] http://35.230.58.211:8501

Requirement already satisfied: altair==4.1.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 3)) (4.1.0)
ERROR: Could not find a version that satisfies the requirement anaconda-client==1.7.2
ERROR: No matching distribution found for anaconda-client==1.7.2
  Stopping...

  You can now view your Streamlit app in your browser.

  Network URL: http://10.12.4.85:8501
  External URL: http://35.230.58.211:8501

Requirement already satisfied: altair==4.1.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 1)) (4.1.0)
Requirement already satisfied: argon2-cffi==20.1.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 2)) (20.1.0)
Requirement already satisfied: astor==0.8.1 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 3)) (0.8.1)
Requirement already satisfied: async-generator==1.10 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 4)) (1.10)
Requirement already satisfied: attrs==20.3.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 5)) (20.3.0)
Requirement already satisfied: backcall==0.2.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 6)) (0.2.0)
Requirement already satisfied: base58==2.1.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 7)) (2.1.0)
Requirement already satisfied: bleach==3.2.2 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 8)) (3.2.2)
Requirement already satisfied: blinker==1.4 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 9)) (1.4)
Requirement already satisfied: cachetools==4.2.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 10)) (4.2.0)
Requirement already satisfied: certifi==2020.12.5 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 11)) (2020.12.5)
Requirement already satisfied: cffi==1.14.4 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 12)) (1.14.4)
Requirement already satisfied: chardet==4.0.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 13)) (4.0.0)
Requirement already satisfied: click==7.1.2 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 14)) (7.1.2)
Requirement already satisfied: decorator==4.4.2 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 16)) (4.4.2)
Requirement already satisfied: defusedxml==0.6.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 17)) (0.6.0)
Requirement already satisfied: entrypoints==0.3 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 18)) (0.3)
Requirement already satisfied: gitdb==4.0.5 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 19)) (4.0.5)
Requirement already satisfied: GitPython==3.1.12 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 20)) (3.1.12)
Requirement already satisfied: idna==2.10 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 21)) (2.10)
Requirement already satisfied: importlib-metadata==3.4.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 22)) (3.4.0)
Requirement already satisfied: ipykernel==5.4.3 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 23)) (5.4.3)
Requirement already satisfied: ipython==7.19.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 24)) (7.19.0)
Requirement already satisfied: ipython-genutils==0.2.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 25)) (0.2.0)
Requirement already satisfied: ipywidgets==7.6.3 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 26)) (7.6.3)
Requirement already satisfied: jedi==0.18.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 27)) (0.18.0)
Requirement already satisfied: Jinja2==2.11.2 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 28)) (2.11.2)
Requirement already satisfied: jsonschema==3.2.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 30)) (3.2.0)
Requirement already satisfied: jupyter-client==6.1.11 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 31)) (6.1.11)
Requirement already satisfied: jupyter-core==4.7.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 32)) (4.7.0)
Requirement already satisfied: jupyterlab-pygments==0.1.2 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 33)) (0.1.2)
Requirement already satisfied: jupyterlab-widgets==1.0.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 34)) (1.0.0)
Requirement already satisfied: MarkupSafe==1.1.1 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 35)) (1.1.1)
Requirement already satisfied: mistune==0.8.4 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 36)) (0.8.4)
Requirement already satisfied: nbclient==0.5.1 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 37)) (0.5.1)
Requirement already satisfied: nbconvert==6.0.7 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 38)) (6.0.7)
Requirement already satisfied: nbformat==5.1.2 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 39)) (5.1.2)
Requirement already satisfied: nest-asyncio==1.4.3 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 40)) (1.4.3)
Requirement already satisfied: notebook==6.2.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 41)) (6.2.0)
Requirement already satisfied: numpy==1.19.5 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 42)) (1.19.5)
Requirement already satisfied: packaging==20.8 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 43)) (20.8)
Requirement already satisfied: pandas==1.2.1 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 44)) (1.2.1)
Requirement already satisfied: pandocfilters==1.4.3 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 45)) (1.4.3)
Requirement already satisfied: parso==0.8.1 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 46)) (0.8.1)
Requirement already satisfied: pickleshare==0.7.5 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 47)) (0.7.5)
Requirement already satisfied: Pillow==8.1.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 48)) (8.1.0)
Requirement already satisfied: prometheus-client==0.9.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 49)) (0.9.0)
Requirement already satisfied: prompt-toolkit==3.0.11 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 50)) (3.0.11)
Requirement already satisfied: protobuf==3.14.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 51)) (3.14.0)
Requirement already satisfied: pyarrow==2.0.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 52)) (2.0.0)
Requirement already satisfied: pycparser==2.20 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 53)) (2.20)
Requirement already satisfied: pydeck==0.5.0 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 54)) (0.5.0)
Requirement already satisfied: Pygments==2.7.4 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 55)) (2.7.4)
Requirement already satisfied: pyparsing==2.4.7 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 56)) (2.4.7)
Requirement already satisfied: pyrsistent==0.17.3 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 57)) (0.17.3)
Requirement already satisfied: python-dateutil==2.8.1 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 58)) (2.8.1)
Requirement already satisfied: pytz==2020.5 in /usr/local/lib/python3.7/site-packages (from -r requirements.txt (line 59)) (2020.5)
ERROR: Could not find a version that satisfies the requirement pywin32==300
ERROR: No matching distribution found for pywin32==300
  Stopping...
[manager] Error checking Streamlit healthz: Get "http://localhost:8501/healthz": dial tcp 127.0.0.1:8501: connect: connection refused

  You can now view your Streamlit app in your browser.

  Network URL: http://10.12.4.85:8501
  External URL: http://35.230.58.211:8501
这是我的复制,其中包含应用程序:

我不明白为什么它在本地工作,但在Streamlight共享中不起作用。你有什么想法吗


谢谢,朱利安

这不是sklearn,而是scikit learn。
看这里

您还可以通过打开requirements.txt文件手动将sklearn的名称更改为scikit learn

scikit-learn==0.22.1
matplotlib==3.2.2
numpy==1.18.1
pandas==1.0.5
streamlit==0.62.0
Werkzeug==1.0.1

说得好,谢谢!在同一轮中,我还取消了
pywin32==300
的注释(因为没有找到它的版本)。现在它工作了!不幸的是,我现在不确定是哪个解决了问题……很高兴它帮助了您,我在Heroku中部署ML模型时也遇到了类似的问题,但从requirements.txt中删除不必要的模块帮助了我