如何控制heroku运行python的目录?

bxjv4tth  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(508)

我正在尝试在python终端中运行python脚本,该终端运行在我部署的heroku应用程序上。这个剧本有几个特点 pd.read_csv('~/path_to_csv_file') 在本地python终端中运行脚本时按预期工作的命令。但是当我尝试在我的heroku应用程序的终端上使用 heroku run python my_script_name ,我收到以下错误消息:

FileNotFoundError: [Errno 2] No such file or directory: '/app/path_to_csv_file'

什么是 /app 似乎要添加的前缀,如何指定正确的路径?

e4yzc0pl

e4yzc0pl1#

我会尽量使用 __file__ 变量,该变量提供脚本的当前位置。
我通常这样使用:

from os import abspath, dirname

CURRENT_DIRECTORY = dirname(abspath(__file__))

实际上,您的所有代码都部署到容器中的/app文件夹中(正如您可以在heroku上托管的我的一个项目的信息部分下面看到的):

如果你真的不想用 __file__ (谁知道呢),您将需要完全理解python相对文件系统是如何工作的(您第一次运行的脚本) python <file>.py 被视为“入口点”,即当前目录)。在示例中,您需要将csv放到一个目录中(确保它至少是您正在上载的应用程序中的一个目录),并参考您第一次运行的脚本:

pd.read_csv('filename') # if the file is in the same directory
pd.read_csv('./path/to/file') # if it's in a directory that is inside the script directory

(很难使用“~”)

相关问题