在我的Streamlightapp.py文件中,我使用代码os.system("dvc pull")从我的Google服务帐户(Google Drive)加载了一个.csv数据文件(labeled_projects.csv),自从几个月前我部署它以来,它一直运行得很好.代码本身是从我的GitHub账户加载的.

但代码似乎突然停止工作,我收到了错误消息FileNotFoundError: [Errno 2] No such file or directory: '/mount/src/mlops/data/labeled_projects.csv'.

Streamlight服务器不会提供有关执行os.system("dvc pull")的错误消息.

试图通过使用tempfile程序包创建.sh文件并使用subprocess程序包执行它来替换os.system("dvc pull")是没有帮助的.收到相同的FileNotFoundError消息,但没有关于dvc pull的错误消息.

此外,在StreamList服务器上执行命令find . -name 'labeled_projects.csv'无法找到任何匹配的返回,这似乎表明该文件未被下载.

如果在本地执行,Stremlightapp.py文件中的代码dvc pull运行良好.

谢谢你的帮忙!

推荐答案

感谢@pmrowla和@Ruslan-kuprieiev的反馈.

首先,我将dvc版本更新为3.14.0版.然后我发现,在我的 case 中,一个问题实际上是,使用Streamlittapp.py文件中的一个简单的Shell脚本dvc pull,无法成功地访问从requirements.txt文件安装到Streamlitt服务器中的正确的可执行文件dvc.

在下面,我只是引用我从ChatGPT 4得到的答案,供您参考.报价中的代码解决了我的问题,我的Google Drive中的.csv数据文件成功加载.

要在Streamlight共享上部署的Streamlight应用程序中运行dvc pull(或任何其他需要在虚拟环境中安装Python包的命令),您需要执行几个步骤.

  1. Install the Required Packages: 确保在GitHub存储库的requirements.txt文件中列出了dvc个.当你在Streamlight共享上部署该应用程序时,它将自动安装requirements.txt中列出的程序包.

  2. Use Python's 100: 您可以使用Pythonsys.executable来获取到Python解释器的路径.这将有助于确保您调用的是安装了dvc的正确的Python环境.

  3. Run the Command from Python: 使用subprocess从您的Streamlight应用程序中运行dvc pull命令.

下面是一个例子:

import sys
import subprocess
import streamlit as st

def pull_data_with_dvc():
    cmd = [sys.executable, "-m", "dvc", "pull"]
    result = subprocess.run(cmd, capture_output=True, text=True)
    if result.returncode == 0:
        st.write("Data pulled successfully!")
        st.write(result.stdout)
    else:
        st.write("Error pulling data!")
        st.write(result.stderr)

# Use this function somewhere in your Streamlit app.
pull_data_with_dvc()

记住:

  • 确保已正确设置DVC遥控器.
  • 如果DVC需要身份验证,您将需要提供必要的凭据,这可能会涉及更多,特别是如果您想要保证凭据的安全.
  • 此方法假定DVC安装为一个Python模块(而不是独立的系统二进制文件).

最后,请注意Streamlight共享在存储和资源方面存在一些限制.如果您要提取大量数据,则可能会达到这些限制.请务必查看Streamlitt的文档和限制,以了解最新的详细信息.

Python相关问答推荐

预期LP_c_Short实例而不是_ctyles.PyCStructType

如何让pyparparsing匹配1天或2天,但1天和2天失败?

opencv Python稳定的图标识别

将轨迹优化问题描述为NLP.如何用Gekko解决这个问题?当前面临异常:@错误:最大方程长度错误

在Pandas框架中截短至固定数量的列

优化在numpy数组中非零值周围创建缓冲区的函数的性能

如何在BeautifulSoup中链接Find()方法并处理无?

根据另一列中的nan重置值后重新加权Pandas列

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

处理(潜在)不断增长的任务队列的并行/并行方法

如何避免Chained when/then分配中的Mypy不兼容类型警告?

将图像拖到另一个图像

如何从.cgi网站刮一张表到rame?

Python键入协议默认值

无法使用requests或Selenium抓取一个href链接

如何设置视频语言时上传到YouTube与Python API客户端

Scrapy和Great Expectations(great_expectations)—不合作

使用groupby方法移除公共子字符串

Python列表不会在条件while循环中正确随机化'

计算天数