【问题标题】:Flask, Heroku and Github Dependencies/File StructureFlask、Heroku 和 Github 依赖项/文件结构
【发布时间】:2013-02-13 07:58:09
【问题描述】:

在整个烧瓶/heroku/github 业务方面相当初学者,但已经使用 python 好几年了,并且有使用 tortoise SVN 的经验。我一直在关注如何在此链接https://devcenter.heroku.com/articles/python 上将代码推送到heroku 的教程,经过大量修改后,我设法上传了我的网络应用程序。但是我肯定错过了一些东西。

目前在项目中,我有一个文件结构来组织不同的进程(例如 web 服务调用和数据库处理),然后通过排序代码将这些导入到主应用程序中:

## Webservices
dirname, filename = os.path.split(os.path.abspath(__file__))
WSdirname = dirname + '\\WebServices\\'
sys.path.append(WSdirname)

import WebservicesModule as WSmodule # Module resides in "WebSerivices" folder

这意味着文件存储在类似的结构中

AppFolder\
    app.py
    WebServices\
        WebservicesModules.py
        ...
    Database\
        DatabaseModules.py
        ...

这在本地有效。但是,一旦被 git 推送到 heroku,代码似乎无法访问 WebservicesModule 模块。在表单中给出错误

导入错误:没有名为 WebservicesModule 的模块。

解释为什么我有这个文件结构;由于需要大量的 Web 服务,因此更容易将它们包含在同一个文件夹中。对于数据库操作等也是如此。

我的问题是这样的。我的代码是不好的做法,意味着heroku不允许吗?还是 git hub 没有将我的文件上传到 heroku,因此无法找到它们(尽管位于主目录的文件结构中)?还是有什么我不知道的问题?尽管在代码中这样做,我是否需要在 requirements.txt 中将这些模块声明为依赖项?

为您提供的任何帮助干杯:)!

【问题讨论】:

    标签: python heroku github dependencies flask


    【解决方案1】:

    问题是您在本地是在 Windows 上开发,而 Heroku 的 slug 使用 Linux 的一些变体。 \ 是 Windows 上的目录分隔符,而 / 是 Linux 上的目录分隔符。

    而不是硬编码\WebServices\ 使用os.path.join 加入您的路径和子目录:

    WSdirname = os.path.join(dirname, "WebServices")
    

    这将确保无论您部署到什么 平台,都使用正确的目录分隔符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-31
      • 2012-10-19
      • 2020-10-17
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      相关资源
      最近更新 更多