python - 由于 Web 部署而将绝对路径更改为相对路径(Python - Flask)

标签 python windows flask deployment path

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

我正在尝试做出改变,但没有一个起作用。 我在服务器端使用 Flask。 我尝试使用所有 os.path 函数,但无法让它工作。

如果它改变了任何东西,我也在使用Windows(我认为它应该因为它进入Heroku服务器)

架构系统基本上是这样的:

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

一些例子:

这行在 server.py 中不再起作用(需要找到 src 文件夹)

dir_of_interest = 'C:\\Users\\user\\PycharmProjects\\MonKeyGenerator\\src'

此外,MonKeyGenerator.py 中的这一行不起作用,因为它需要在服务器文件夹内找到名为“MonKeys”的深层文件夹

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

最佳答案

根据 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它负责处理它。

您可以在 server.py 中使用例如:

# 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) 

然后:

dir_of_interest = os.path.join(PARENT_DIR, 'src')

了解更多关于os.path.join的信息查看如何处理 MonKeyGenerator.py

中的示例

如果您使用的是 Python 3.4+,您还可以查看 pathlib 。 这应该会让您对如何遵循代码示例的其余部分有一些直觉。我希望这会有所帮助。

关于python - 由于 Web 部署而将绝对路径更改为相对路径(Python - Flask),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49470124/

相关文章:

python - 名称错误 : name 'K' is not defined

linux - 在 Windows 上安装 ubuntu

html - 居中 Bootstrap/FlaskWTForms (Jinja)

c++ - 部署使用 C++ 开发的应用程序

c# Windows 服务是否(可能)使用 app.config

python - Flask:处理表单输入后如何更新div

python - 操作系统错误 : [Errno 98] Address already in use Running Flask Application on Apache2

python - python 中的赫斯特指数

python - 如何在 Python 中删除远程 SFTP 服务器目录中的所有文件?

python - Pandas DataFrame 到列表列表