W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
這里你將學會如何建立一個項目“骨架”目錄。這個骨架目錄具備讓項目跑起來的所有基本內容。它里邊會包含你的項目文件布局、自動化測試代碼,模組,以及安裝腳本。當你建立一個新項目的時候,只要把這個目錄復制過去,改改目錄的名字,再編輯里邊的文件就行了。
你需要使用pip預先安裝一些軟件包,不過問題就來了。我的本意是讓這本書越清晰越干凈越好,不過安裝軟件的方法是在是太多了,如果我要一步一步寫下來,那 10 頁都寫不完,而且告訴你吧,我本來就是個懶人。
所以我不會提供詳細的安裝步驟了,我只會告訴你需要安裝哪些東西,然后讓你自己搞定。即使我給了你所需軟件詳盡的安裝說明,你還是不得不與之奮斗。計算機更新?lián)Q代非常頻繁,你在安裝過程中遇到問題的時候,可以在網上搜索解決方案。
你需要安裝下面的軟件包:
- pip – http://pypi.python.org/pypi/pip
- distribute – http://pypi.python.org/pypi/distribute
- nose – http://pypi.python.org/pypi/nose/
- virtualenv – http://pypi.python.org/pypi/virtualenv
不要只是手動下載并且安裝這些軟件包,你應該看一下別人的建議,尤其看看針對你的操作系統(tǒng)別人是怎樣建議你安裝和使用的。同樣的軟件包在不一樣的操作系統(tǒng)上面的安裝方式是不一樣的,不一樣版本的 Linux 和 OSX 會有不同,而 Windows 更是不同。
我要預先警告你,這個過程會是相當無趣。在業(yè)內我們將這種事情叫做 “yak shaving(剃牦牛)”。它指的是在你做一件有意義的事情之前的一些準備工作,而這些準備工作又是及其無聊冗繁的。你要做一個很酷的 Python 項目,但是創(chuàng)建骨架目錄需要你安裝一些軟件包,而安裝軟件包之前你還要安裝軟件包安裝工具(package installer),而要安裝這個工具你還得先學會如何在你的操作系統(tǒng)下安裝軟件,真是煩不勝煩呀。
無論如何,還是克服困難把。你就把它當做進入編程俱樂部的一個考驗。每個程序員都會經歷這條道路,在每一段“酷”的背后總會有一段“煩”的。
NOTE:有時候python的安裝程序不會把
C:\Python27\Script
加入到系統(tǒng)的PATH
中,如果你遇到了這個問題,就參照練習0自己把這個目錄加上:[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27\Scripts", "User")
首先使用下述命令創(chuàng)建你的骨架目錄:
$ mkdir projects
$ cd projects/
$ mkdir skeleton
$ cd skeleton
$ mkdir bin NAME tests docs
我使用了一個叫projects
的目錄,用來存放我自己的各個項目。然后我在里邊建立了一個叫做skeleton
的文件夾,這就是我們新項目的基礎目錄。其中叫做NAME
的文件夾是你的項目的主文件夾,你可以將它任意取名。
接下來我們要配置一些初始文件:
$ touch NAME/__init__.py
$ touch tests/__init__.py
在windows上,你可以這樣配置初始文件:
$ new-item -type file NAME/__init__.py
$ new-item -type file tests/__init__.py
以上命令為你創(chuàng)建了空的模組目錄,以供你后面為其添加代碼。然后我們需要建立一個setup.py
文件,這個文件在安裝項目的時候我們會用到它:
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
config = {
'description': 'My Project',
'author': 'My Name',
'url': 'URL to get it at.',
'download_url': 'Where to download it.',
'author_email': 'My email.',
'version': '0.1',
'install_requires': ['nose'],
'packages': ['NAME'],
'scripts': [],
'name': 'projectname'
}
setup(**config)
編輯這個文件,把自己的聯(lián)系方式寫進去,然后放到那里就行了。
最后你需要一個簡單的測試專用的骨架文件叫tests/NAME_tests.py
:
from nose.tools import *
import NAME
def setup():
print "SETUP!"
def teardown():
print "TEAR DOWN!"
def test_basic():
print "I RAN!"
當你完成一切設置,你的目錄應該看起來像我在這里:
skeleton/
NAME/
__init__.py
bin/
docs/
setup.py
tests/
NAME_tests.py
__init__.py
從現(xiàn)在開始,你應該在這個目錄下運行命令。如果你不能執(zhí)行ls -R
命令并看到相似的目錄結構,說明你在一個錯誤的目錄下。比如,人們經常會到tests/
目錄下嘗試執(zhí)行文件,那肯定是無法運行的。要運行你應用的測試用例,你也應該在目錄tests/
的上一層目錄執(zhí)行,加入你這樣執(zhí)行:
$ cd tests/ # WRONG! WRONG! WRONG!
$ nosetests
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
那結果肯定是錯誤的,你應當在tests/
目錄的上一層目錄執(zhí)行,所以為了修正你的錯誤,你應該這樣做:
$ cd .. # get out of tests/
$ ls # CORRECT! you are now in the right spot
NAME bin docs setup.py tests
$ nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.004s
OK
一定要記住這一點,因為人們經常犯這個錯誤。
安裝了所有上面的軟件包以后,你就可以做下面的事情了:
$ nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.007s
OK
下一節(jié)練習中我會告訴你nosetests
的功能,不過如果你沒有看到上面的畫面,那就說明你哪里出錯了。確認一下你的NAME
和tests
目錄下存在 __init__.py
, 并且你沒有把 tests/NAME_tests.py
命名錯。
剃牦牛的事情已經做的差不多了,以后每次你要新建一個項目時,只要做下面的事情就可以了:
- 拷貝這份骨架目錄,把名字改成你新項目的名字。
- 再將
NAME
模組更名為你需要的名字,它可以是你項目的名字,當然別的名字也行。- 編輯
setup.py
讓它包含你新項目的相關信息。- 重命名
tests/NAME_tests.py
,讓它的名字匹配到你模組的名字。- 使用
nosetests
檢查有無錯誤。- 開始寫代碼吧。
本節(jié)沒有附加題,不過有一些小測驗需要你完成
- 找文檔閱讀,學會使用你前面安裝了的軟件包。
- 閱讀關于
setup.py
的文檔,看它里邊可以做多少配置。Python 的安裝器并不是一個好軟件,所以使用起來也非常奇怪。- 創(chuàng)建一個項目,在模組目錄里寫一些代碼,并讓這個模組可以運行。
- 在
bin
目錄下放一個可以運行的腳本,找材料學習一下怎樣創(chuàng)建可以在系統(tǒng)下運行的 Python 腳本。- 在你的
setup.py
中加入bin
這個目錄,這樣你安裝時就可以連它安裝進去。- 使用
setup.py
安裝你的模組,并確定安裝的模組可以正常使用,最后使用pip
將其卸載。
是的,不過也取決于你windows系統(tǒng)的版本,你可能需要在配置上下點功夫它才能正常運行,堅持研究并嘗試,直到你能在windows上正常的運行這個骨架,或者你可以找一些有python+windows開發(fā)經驗的人幫忙。
nosetests
有時候python的安裝程序不會把
C:\Python27\Script
加入到系統(tǒng)的PATH
中,如果你遇到了這個問題,就參照練習0自己把這個目錄加上:[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27\Scripts", "User")
setup.py
中放些什么?確認你閱讀了distutils的文檔
http://docs.python.org/distutils/setupscript.html
。
NAME
模塊,而且還有個"ImportError"報錯確認你創(chuàng)建了
NAME/__init__.py
這個文件,如果你用的windows系統(tǒng),確認你沒有把這文件命名為NAME/__init__.py.txt
,很多程序員都犯過這個錯。
bin/
文件夾這只是一個用來存放在命令行執(zhí)行的腳本的地方,不是用來存在模塊的。
有很多python寫的項目都可以作為實例,你可以看看我創(chuàng)建的這個簡單的項目
https://gitorious.org/python-modargs
.
nosetests
運行時只顯示正在運行一個測試,這是正確的嗎?是的,我的也是這么顯示的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: