2013-02-27 45 views
0

相當初學者在整個燒瓶/ Heroku的/ github上的業務,但使用python幾年來一直和曾與烏龜SVN的經驗。我一直在關注如何在此鏈接https://devcenter.heroku.com/articles/python推代碼Heroku的教程和許多修修補補後,我設法讓我的web應用程序上傳。但是我肯定錯過了一些東西。瓶,Heroku的和Github上依賴/文件結構

目前該項目中我有一個文件結構來組織不同的進程(例如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 
     ... 

本地這個工程。然而,一旦通過混帳推到Heroku的它似乎是代碼不能訪問WebservicesModule模塊。給出一個錯誤的形式

Import error: no module named WebservicesModule.

爲了解釋爲什麼我有這個文件結構;因爲需要大量的網絡服務,所以將它們包含在相同的文件夾中更容易。對於數據庫操作等也是如此。

我的問題是這樣的。我的代碼是不好的練習,這意味着heroku不允許嗎?或者已經git的樞紐沒有上傳我的文件,Heroku的,因此不能夠找到他們(儘管在主目錄的文件結構是)?還是有一些我不知道的問題?我需要儘管在代碼執行,從而在requirements.txt依賴關係,申報這些模塊?

乾杯,你可以提供任何幫助:)!

回答

1

問題是你在Windows上正在開發的地方,而Heroku的slu use使用了一些Linux版本。 \是Windows上的目錄分隔符,但是/是Linux上的目錄分隔符。

而不是硬編碼\WebServices\使用os.path.join加入您的路徑和子目錄:

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

這將確保無論什麼平臺部署到,使用正確的目錄分隔符。

+0

哦男人菜鳥錯誤,歡呼! – 2013-02-28 12:59:05