Flask,Heroku和Github依赖/文件结构

时间:2013-02-27 13:27:45

标签: python heroku github dependencies flask

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

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

## 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中将这些模块声明为依赖项,尽管在代码中这样做了?

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

1 个答案:

答案 0 :(得分:1)

问题在于,您在本地开发Windows,而Heroku的slugs使用某种Linux版本。 \是Windows上的目录分隔符,但 / 是Linux上的目录分隔符。

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

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

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