<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [toc] ## 目錄組織方式2 假設項目名為foo, 建議的最方便快捷目錄結構是這樣: ``` Foo/ |-- bin/ | |-- foo | |-- foo/ | |-- tests/ | | |-- __init__.py | | |-- test_main.py | | | |-- __init__.py | |-- main.py | |-- docs/ | |-- conf.py | |-- abc.rst | |-- setup.py |-- requirements.txt |-- README ``` ### 簡要解釋: * bin/: 存放項目的一些可執行文件,也可以起名script/之類。 * foo/: 存放項目的所有源代碼。 (1) 源代碼中的所有模塊、包都應該放在此目錄。不要置于頂層目錄。 (2) 其子目錄tests/存放單元測試代碼; (3) 程序的入口最好命名為main.py。 * docs/: 存放一些文檔。 * setup.py: 安裝、部署、打包的腳本。 * requirements.txt: 存放軟件依賴的外部Python包列表。 * README: 項目說明文件。 >開源軟件的目錄該如何組織,可以參考[這篇文章](http://www.jeffknupp.com/blog/2013/08/16/open-sourcing-a-python-project-the-right-way/)。 ## 關于README的內容 **每個項目都應該有的文件**,目的是能簡要描述該項目的信息,讓讀者快速了解這個項目。它需要說明以下幾個事項: 1. 軟件定位,軟件的基本功能。 2. 運行代碼的方法: 安裝環境、啟動命令等。 3. 簡要的使用說明。 4. 代碼目錄結構說明,更詳細點可以說明軟件的基本原理。 5. 常見問題說明。 ## 關于setup.py * Python流行的打包工具[setuptools](https://pythonhosted.org/setuptools/setuptools.html#developer-s-guide) 以參考一下Python的一個Web框架,flask是如何寫的:[setup.py](https://github.com/mitsuhiko/flask/blob/master/setup.py) **一個項目一定要有一個安裝部署工具**,能快速便捷的在一臺新機器上將環境裝好、代碼部署好和將程序運行起來。 `setup.py`可以將這些事情自動化起來,提高效率、減少出錯的概率。"復雜的東西自動化,能自動化的東西一定要自動化。"是一個非常好的習慣。 自己寫個安裝腳本(`deploy.sh`)替代`setup.py`也未嘗不可。 ## requirements.txt 這個文件存在的目的是: 1. 方便開發者維護軟件的包依賴。 將開發過程中新增的包添加進這個列表中,避免在`setup.py`安裝依賴時漏掉軟件包。 2. 方便讀者明確項目使用了哪些Python包。 * 文件的格式 每一行包含一個包依賴的說明,通常是`flask>=0.10`這種格式,要求是這個格式能被`pip`識別,這樣就可以簡單的通過`pip install -r requirements.txt`來把所有Python包依賴都裝好了。 * 具體格式說明:[點這里](https://pip.readthedocs.org/en/1.1/requirements.html)。 ## 關于配置文件的使用方法 注意,在上面的目錄結構中,沒有將`conf.py`放在源碼目錄下,而是放在`docs/`目錄下。上面目錄結構中的`conf.py`,是給出的一個配置樣例,不是在寫死在程序中直接引用的配置文件。 很多項目對配置文件的使用做法是: 1. 配置文件寫在一個或多個python文件中,比如此處的`conf.py`。 2. 項目中哪個模塊用到這個配置文件就直接通過`import conf`這種形式來在代碼中使用配置。 這種做法存在的問題: 1. 這讓單元測試變得困難(因為模塊內部依賴了外部配置) 2. 另一方面配置文件作為用戶控制程序的接口,應當可以由用戶自由指定該文件的路徑。 3. 程序組件可復用性太差,因為這種貫穿所有模塊的代碼硬編碼方式,使得大部分模塊都依賴`conf.py`這個文件。 我認為配置的使用,更好的方式是: 1. 模塊的配置都是可以靈活配置的,不受外部配置文件的影響。 2. 程序的配置也是可以靈活控制的。 所以,不應當在代碼中直接`import conf`來使用配置文件。可以通過給`main.py`啟動參數指定配置路徑的方式來讓程序讀取配置內容。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看