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

相关内容

    暂无相关文章

评论关闭