标签:
项目骨架
学会如何建立一个项目的“骨架”目录。这个骨架目录具备让项目跑起来的所有基本内容。里边会包含你的项目文件布局、自动测试代码、模块及安装脚本。当你要建立一个新项目的时候,只需将这个目录复制进去,改改目录的名字,再编辑里边的文件就行了。
Python软件包的安装
需要预先安装一些软件包,安装软件包的方法太多,所以不提供详细安装步骤,只告诉需要安装哪些东西,然后自己搞定。这对你有好处,你将打开一个全新的世界,里边充满了其他人发布的Python软件。
安装以下软件包:
不要只是手动下载并且安装这些软件包,还应该看一下别人的建议,尤其针对你的操作系统别人是怎样建议你安装和使用的。同样软件包在不一样的操作系统上安装方式是不一样的,不一样版本的Linux和OSX会有不同,而Windows更是不同。
此过程会相当无趣。业内将这种事情叫做“yak shaving”(剃牦牛):在做一件有意义的事情之前的一些准备工作,而这些准备工作又是极其无聊和冗繁的。 你要做一个很酷的Python项目,但创建骨架目录需要你安装一些软件包,而安装软件包之前还要安装软件包安装工具(package installer),而要安装这个工具还得先学会如何在你的操作系统下安装软件。。。你需要做的就是克服它。
注意: 有时Python安装程序并不添加C:/Python27/Script到系统路径(PATH)中。若遇到这种情况,可像习题0中针对C:/Python27所做那样,使用一下语句将其添加到系统路径中:[Environment]::SetEnvironment Variable("Path", "$env:Path;C:\Python27\Script", "User")
创建骨架项目目录
首先使用下述命令创建骨架目录的结构:
$ mkdir projects # 用一个叫projects的目录来存储自己的各个项目
$ cd projects/
$ mkdir skeleton # 在projects中建立一个叫skeleton的目录—新项目的基础目录
$ cd skeleton
$ mkdir bin
$ mkdir NAME # NAME目录是你项目的主模块,使用骨架时可任意取名
$ mkdir tests
$ mkdir docs
接下来设置一些初始文件。在Linux/OSX环境下进行配置:
$ touch NAME/__init__.py
$ touch tests/__init__.py
在Windows PowerShell中设置方式如下:
$ new-item -type file NAME/__init__.py
$ new-item -type file tests/__init__.py
以上命令创建了新模块目录,以供后面为其添加代码。然后我们需要建立一个setup.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:
# NAME_tests.py
from nose.tools import *
import NAME
def setup():
print "SETUP!"
def teardown():
print 'TEAR DOWN!"
def test_basic():
print "I RAN!"
最终目录结构
完成一切准备工作时,Unix目录应如下:
$ ls -R
NAME bin docs setup.py tests./NAME:
__init__.py
./bin:
./docs:./tests:
NAME_tests.py __init__.py
Windows下结构也是一样的。如果以树状结构显示就是:
setup.py
NAME/
__init__.py
bin/
docs/
tests/
NAME_tests.py
__init__.py
从现在开始,你应该在这层目录运行相关的命令。若你运行 ls -R 看到的不是这个目录架构,那你所处的目录就是错的。如:人们经常到tests/目录下运行那里的文件,但这样是行不通的。要运行你的测试,你需要到tests/的上一级目录,也就是上面显示的目录来运行。所以,如果你运行下面的命令就大错特错了!
$ cd tests/ # WRONG! WRONG! WRONG!
$ nosetests
-----------------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
你必须在tests目录的上一层运行才可以,所以你如果犯了这个错误,应该用下面的方法来正确执行:
$ cd .. # get out of the 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
下一习题会解释nosetests的功能,但是如果你没看到上面的内容就说明哪里出错了。确认一下你的NAME 和 tests 目录下存在___init__.py,并且你没有把tests/NAME_tests.py命名错。
使用这个骨架
“剃牦牛”的事情做的基本差不多了,以后每次要新建一个项目时,只需做下面的事情就可以了。
1. 复制这份骨架目录,把名字改为新项目的名字
2. 再将NAME模块更名为你需要的名字,它可以是你的项目的名字,当然别的名字也行
3. 编辑setup.py, 让它包含新项目的相关信息。
4. 重命名tests/NAME_tests.py, 让它的名字匹配到你的模块的名字。
5. 使用nosetests检查有无错误。
6. 开始写代码。
小测验
1. 找文档阅读,学会使用前面安装了的软件包。
2. 找到关于setup.py的文档,看它里边可以做多少配置。Python的安装器并不是一个好软件,所以使用起来也非常奇怪。
3. 创建一个项目,在模块目录里写一些代码,并让这个模块可以运行。
4. 在bin目录下放一个可运行的脚本。找材料学习一下怎样创建可在系统下运行的Python脚本。
5. 在setup.py中加入bin里的脚本,这样你安装时就可连它安装进去。
6. 使用setup.py安装你的模块,并确定安装的模块可正常使用,最后使用pip将其卸载
常见问题回答
这些指令在Windows下能用吗?
应该可以,但某些版本可能遇到一点困难。自己研究并尝试,直至搞定为止,或找有经验朋友帮忙也可以。
Windows下好像不能运行nosetests?
有时Python安装程序并不添加C:/Python27/Script到系统路径(PATH)中。若遇到这种情况,可像习题0中针对C:/Python27所做那样,使用一下语句将其添加到系统路径中:[Environment]::SetEnvironment Variable("Path", "$env:Path;C:\Python27\Script", "User")
setup.py的配置字典中该放些什么信息进去?
读读distutils的文档就知道了: http://docs.python.org/distutils/setupscript.html
没法加载NAME模块,遇到了ImportError?
确定创建了NAME/__init__.py文件。若用的Windows,那就在检查一下是否被命名为NAME/__init__.py.txt,有的编辑器会默认弄成这个样子。
为什么非要弄个bin/文件夹?
这只是一个标准位置,用来存放从命令行运行的脚本,但这不是存放模块的地方。
有没有实际项目代码可以给我看看?
很多Python项目都用了类似的结构,你可看看这个简单项目:http://gitorious.org/python-modargs
我的nosetests只显示运行了一个测试。这样有没有问题?
没问题,我的也一样
标签:
来源: https://blog.csdn.net/ruijieyang/article/details/82937031