0

在整个烧瓶/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 中将这些模块声明为依赖项?

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

4

1 回答 1

1

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

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

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

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

于 2013-02-28T03:03:35.647 回答