设为首页 收藏本站
查看: 1311|回复: 0

[经验分享] Learn Python The Hard Way学习(46)

[复制链接]

尚未签到

发表于 2017-5-5 12:03:56 | 显示全部楼层 |阅读模式
下面学习怎么创建一个好的项目框架,基本的框架包括项目布局,自动化测试,模块,安装脚本。当你创建一个新项目的时候,复杂这个框架改个名字就好了。



框架内容

首先创建项目目录:

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文件,我们使用它来安装项目:

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:

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 fromhttp://pypi.python.org/pypi/pip
  • distribute fromhttp://pypi.python.org/pypi/distribute
  • nose fromhttp://pypi.python.org/pypi/nose/
  • virtualenv fromhttp://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卸载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-373459-1-1.html 上篇帖子: 使用Shiboken为C++和Qt库创建Python绑定 下篇帖子: python学习笔记8——第七章 面向对象
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表