我创建了一个可以在本地运行的应用程序,我想将其部署到 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)
As per Heroku 文档 https://devcenter.heroku.com/articles/stack#viewing-which-stack-your-app-is-using你可以读到:
堆栈是由 Heroku 策划和维护的操作系统映像。堆栈通常基于现有的开源Linux发行版,例如 Ubuntu。
您提供的代码示例向我们表明您使用了特定于 Windows 的文件路径名,当您尝试在其他平台上运行代码时,这可能会导致问题。
为了避免此类问题并使路径独立于平台,您应该使用os.path https://docs.python.org/3/library/os.path.html它会照顾它。
例如,您可以在您的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 https://docs.python.org/3/library/os.path.html#os.path.join查看如何处理中的示例MonKeyGenerator.py
如果您使用的是 Python 3.4+,您还可以看看pathlib https://docs.python.org/3/library/pathlib.html。
这应该会让您对如何遵循代码示例的其余部分有一些直觉。我希望这有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)