由于web部署,将绝对路径更改为相对路径(Python Flask)

2024-10-01 09:26:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个在本地运行的应用程序,我想把它部署到Heroku。 当我部署它时,我在Heroku日志中得到一个错误:找不到我在脚本中指定的文件夹(正如预期的那样,它们是绝对路径)。在

我正试图做出改变,但没有一个奏效。 我在服务器端使用烧瓶。 我试着用操作系统路径但我不能让它工作。在

如果Windows有任何变化,我也会使用它(我认为应该这样做,因为它会进入Heroku服务器)

建筑体系基本上是这样的:

MonKeyGenerator
└── src
    └── MonkeyGenerator.py
└── server
    ├── static
        └── Images
            └── MonKeys
    └── server.py

一些例子:

这条线进来了服务器.py不再工作(需要找到src 文件夹)

^{pr2}$

这条线也在MonKeyGenerator.py无法工作,因为它需要在服务器文件夹中找到一个名为“MonKeys”的深层文件夹

output_img = os.path.join("C:\\Users\\user\\PycharmProjects\\MonKeyGenerator\\server\\static\\images\\MonKeys", image_name)

Tags: pysrc服务器脚本文件夹应用程序herokuserver
1条回答
网友
1楼 · 发布于 2024-10-01 09:26:11

根据Heroku Documentation你可以读到:

A stack is an operating system image that is curated and maintained by Heroku. Stacks are typically based on an existing open-source Linux distribution, such as Ubuntu.

您提供的代码示例显示,您使用了特定于Windows的文件路径名,当您尝试在其他平台上运行代码时,这可能会导致问题。在

为了避免这类问题并使路径独立于平台,您应该使用os.path来处理它。在

{cd1>中可以使用:

# absolute path to this file
FILE_DIR = os.path.dirname(os.path.abspath(__file__))
# absolute path to this file's root directory
PARENT_DIR = os.path.join(FILE_DIR, os.pardir) 

然后:

^{pr2}$

阅读有关os.path.join的更多信息,了解如何处理MonKeyGenerator.py中的示例

如果您使用的是python3.4+,那么您还可以看看pathlib。 这会让您有一些直觉,知道如何遵循其余的代码示例。我希望这有帮助。在

相关问题 更多 >