自從上次開始重新學習python之後,現在繼續開始把python學習之旅延伸到Django
學習Django 主要是為了要架設所謂的RESTful的server而鋪路
主要也是為了之後可以把server架設起來後,不論是透過行動裝置或是其他的伺服器可以抓取到放在Heroku上面的資料
這邊由於自己也還在摸索,所以對於上列所有的專有名詞請自行點進去觀看

在前一篇文章中,裡面有提到兩個奇怪的指令 virtualenv 與 source  與Procfile
尋找了一下相關的教學文件,這裡可以摘錄一下:

> > Virtualenv 和 Pythonbrew 都是可以創造虛擬(獨立)Python 環境的工具,只是虛擬(獨立)標的不同。 Virtualenv 可以隔離函數庫需求不同的專案,讓它們不會互相影響。在建立並啟動虛擬環境後,透過 `pip` 安裝的套件會被放在虛擬環境中,專案就可以擁有一個獨立的環境。簡而言之,Virtualenv 可以幫你做到: > > > > > * 在沒有權限的情況下安裝新套件 > > * 不同專案可以使用不同版本的相同套件 > > * 套件版本升級時不會影響其他專案 取自: [http://www.openfoundry.org/tw/tech-column/8516-pythons-virtual-environment-and-multi-version-programming-tools-virtualenv-and-pythonbrew](http://www.openfoundry.org/tw/tech-column/8516-pythons-virtual-environment-and-multi-version-programming-tools-virtualenv-and-pythonbrew) >

另外一篇也有提到: 

> > Virtualenv 可以建立虛擬的 Python 環境,虛擬環境彼此之間互不干擾,也可避免搞亂 Python 主要安裝路徑,可以使用 `virtualenv --distribute venv` 來建立一個虛擬環境路徑,其中 venv 可以是任意的環境名稱,這會建立一個 venv 目錄,進入該目錄後,執行 `source bin/activate` 可以啟動虛擬環境,輸入 `deactivate` 可以關閉虛擬環境。 > > > > [http://www.codedata.com.tw/python/python-tutorial-the-1st-class-3-hello-world-traditional-chinese-edition/](http://www.codedata.com.tw/python/python-tutorial-the-1st-class-3-hello-world-traditional-chinese-edition/) > >

所以依照這兩種意思,可以清楚地了解為了不要混淆到各個專案的套件,所以可以利用virtualenv來做個簡單的隔離.

快速筆記

這裡相當推薦CoreData這篇文章,不論是他的Django版本比較不容易有相容性的問題,之後也有簡單的介紹關於RESTful與Python架構的文章.
我這裡只註解一些比較容易忽略的地方

  • 小心使用另外一篇OpenFoundry的文章由於他的設定文件都是針對Django 1.4.2 如果你的環境比較新.在設定資料庫就會發生問題.

  • 建議的循序漸進的方式如下:

    • 先用python 架設起來,並且可以正確的使用 python manage.py runserver正常執行.

    • 在開始設定Heroku 的檔案 Procfile 或是requirements.txt然後用 foreman start來測試是不是可以正常執行.

    • 最後才用heroku create 跟 git 來push 到Heroku 主機上面去.

  • 這理由這篇文章有提供教學(當然Heroku官方也有) 裡面有提供 Procfile 的設定

    • web: python manage.py runserver 0.0.0.0:$PORT —noreload 

 

git push heroku master 發生錯誤時候的解決方法:

  • No such app as XXXXX-XXXX

    • 原因:

      • 可能是因為執行heroku create兩次
    • 解法:

      • 首先,查看git remote 設定

        • git remote -v  
      • 確定之後移除

        • git remote rm heroku
      •  然後加上新建立的id

        • git remote add heroku YOUR_APP_ID
      • 參考: iT邦幫忙 http://ithelp.ithome.com.tw/question/10061577

  • Push rejected, no Cedar-supported app detected

    • 原因:

      • 這個東西我找了很久,原因可能是任何一種.這邊提供檢查方法跟解決方法.
    • 解法:

      • 先確認local tool “foreman start” 是可以正常執行,來確認 Procfile 跟 requirements.txt沒有任何問題…

        • 如果發生問題,在去這兩個檔案去尋找問題點.
      • 接下來可能是因為你已經開啟了第二個heroku app,由於heroku只能接受開啟一個app,去Heroku控制台去把另外的都砍掉.然重新試試看.

 


Evan

Attitude is everything