Elastic Beanstalk无法识别文件的绝对路径,返回FileNotFoundError

时间:2019-09-08 00:50:53

标签: python flask amazon-elastic-beanstalk

我正在使用AWS Elastic Beanstalk运行Flask应用程序。该应用程序已成功部署,但是我的代码中有一个任务,其中我使用pandas read_csv从csv文件中提取数据。代码行是:

form1 = pd.read_csv('/opt/python/current/app/application/model/static2/form1.csv')

当我尝试在应用程序中执行该任务时,我收到FileNotFoundError:
FileNotFoundError: [Errno 2] File b'/opt/python/current/app/application/model/static2/form1.csv' does not exist: b'/opt/python/current/app/application/model/static2/form1.csv'

仅当我使用文件的完整绝对路径时,才在本地执行程序时不会发生此问题。这是由于我的依赖项的设置方式。

当我第一次部署该应用程序时,由于我仍在使用文件的本地路径,因此收到了错误消息,因此我将其更改为您在上面看到的那个,这就是我认为的意思。在Beanstalk上上传的文件的绝对路径。我之所以这样认为是因为我是从静态映像复制而来的,而该静态映像之前存在问题。

我应该注意,我无法验证绝对路径,因为我无法使用EB CLI远程进入Elastic Beanstalk。几天来,我一直在尝试在计算机上设置EB CLI,但反复失败,我认为是由于计算机上的版本和文件问题怪异。因此,我无法使用命令行获取信息或解决问题。

那么,我在上面使用的路径是否与EB绝对路径一致?可以通过添加我的静态文件配置来解决此问题吗?如果是这样,怎么办?我可以在.config文件中添加任何内容吗?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

问题解决了!我的过程是由RQ工人执行的。 rq工作程序正在我的本地计算机上运行,​​但我没有意识到这是工作程序在寻找文件路径。我通过打印os.getcwd()并注意到当前的工作目录仍然是我的本地路径来解决这个问题。因此,我在FileNotFoundError上抛出了一个异常,要求工作人员根据需要使用本地路径。