Learn Python The Hard Way学习(46) - 一个项目的骨架
下面学习怎么创建一个好的项目框架,基本的框架包括项目布局,自动化测试,模块,安装脚本。当你创建一个新项目的时候,复杂这个框架改个名字就好了。
框架内容
首先创建项目目录:
root@he-desktop:~/python# mkdir -p projects
root@he-desktop:~/python# cd projects/
root@he-desktop:~/python/projects# mkdir skeleton
root@he-desktop:~/python/projects# cd skeleton/
root@he-desktop:~/python/projects/skeleton# mkdir bin NAME tests docs
我使用projects这个目录做为我的工作目录,目录里面包含skeleton这个项目,在你使用skeleton调用项目主模块的时候,NAME目录会被重命名。
建立初始化文件:
root@he-desktop:~/python/projects/skeleton# touch NAME/__init__.py
root@he-desktop:~/python/projects/skeleton# touch tests/__init__.py
然后创建setup.py文件,我们使用它来安装项目:
[python]
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)
上面填写你自己的联系信息。
最后建一个简单的文件,在tests中,名称是NAME_tests.py:
[javascript]
from nose.tools import *
import NAME
def setup():
print "SETUP!"
def teardown():
print "TEAR DOWN!"
def test_basic():
print "I RAN!"
最终的文件结构
root@he-desktop:~/python/projects/skeleton# ls -R
.:
bin docs NAME setup.py tests
./bin:
./docs:
./NAME:
__init__.py
./tests:
__init__.py NAME_tests.py
如果你的目录结构不是这样的,那么你可能处在不正确的位置,很多人会进入tests/目录去执行文件,这是不对的,执行程序测试,你必须在tests/的上级目录,如果你这样做:
root@he-desktop:~/python/projects/skeleton/tests# nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
那就是不对的,正确的做法是:
root@he-desktop:~/python/projects/skeleton/tests# cd ..
root@he-desktop:~/python/projects/skeleton# ls
bin docs NAME setup.py tests
root@he-desktop:~/python/projects/skeleton# nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.011s
OK
安装Python包
安装下面这些包:
pip from http://pypi.python.org/pypi/pip
distribute from http://pypi.python.org/pypi/distribute
nose from http://pypi.python.org/pypi/nose/
virtualenv from http://pypi.python.org/pypi/virtualenv
不仅仅是下载安装这些包,还要去看看别人是怎么评价这些包的。
测试你的安装
当你完成了安装,试试下面的命令:
root@he-desktop:~/python/projects/skeleton# nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.011s
OK
下一个练习会介绍这个命令,如果没有出现上面的提示,说明你哪里做错了,确保__init__.py文件在NAME和tests文件夹下,确保tests/NAME_tests.py文件的正确性。
使用框架
上面的工作做好了以后,当你要开始一个新的项目时,做这些事就可以了:
复制框架的文件夹,重命名为你需要的名称。
重命名NAME模块,改成你想要的名称。
编辑setup.py文件对应的信息。
重命名tests/NAME_tests.py中的NAME和上面的模块名称一样。
使用nosetests确认是否正常工作。
开始编程。
需求测试
这个练习没有加分练习,但是你必须完成下面的练习:
查看你安装的包的用法。
阅读setup.py文件和它的需求。
创建一个项目,在模块中编写一个能运行的代码。
写一个可运行的脚本放到bin文件夹中,看看系统是怎么运行python脚本的。
在setup.py中设置bin脚本,以便安装。
使用setup.py安装你的模块,确保它能工作,使用pip卸载。
作者:lixiang0522
补充:Web开发 , Python ,