【发布时间】:2021-07-04 15:39:54
【问题描述】:
我正在尝试在我已部署的 Heroku 应用程序上运行的 python 终端中运行 python 脚本。该脚本有几个 pd.read_csv('~/path_to_csv_file') 命令,当我在本地 python 终端中运行脚本时,它们按预期工作。但是,当我尝试使用 heroku run python my_script_name 在 Heroku 应用程序的终端中运行此脚本时,我收到以下错误消息:
FileNotFoundError: [Errno 2] No such file or directory: '/app/path_to_csv_file'
似乎要添加的/app 前缀是什么,如何指定正确的路径?
【问题讨论】:
-
也许他们在
chroot环境中运行您的应用程序,您的“主”目录称为“应用程序”。您是否将文件复制到应用程序目录中?你打印了os.getcwd()看看它说了什么? -
欢迎来到 Stack Overflow!你能澄清一下你希望在哪里找到你的文件吗?它们是否存储在应用程序代码旁边并签入到 repo 中?
-
@NikolayShebanov 目录如下所示:
my_app | |--app.py |--my_database.db my_script_name.pycsv 文件只是存储在我桌面上的一个文件夹中,我没有将它们签入存储库,因为我只想访问我运行脚本 my_script_name.py 时的机器。感谢您的回复! -
您的 Heroku 运行在一个无法访问服务器文件系统的虚拟环境中。您必须将这些文件放在您的应用程序目录或其子目录中。 Flask 不会允许它们被意外访问。这完全取决于您的应用。
-
@Rob Heroku 将无法访问您计算机的文件系统。如果您的应用程序需要的 CSV 存储在您的计算机上,并且您的应用程序在您的计算机上本地运行,那么您的应用程序就可以访问它。但是,如果您在没有 CSV 文件的情况下将应用程序部署到 Heroku,Heroku 将无法仅从您的计算机中读取文件。您需要将 CSV 文件与您的应用一起发送。
标签: python flask heroku flask-sqlalchemy heroku-postgres