暂时不对自己的背景做任何的交代, 为什么写这个系列, 参加YC培训课最大的总结, 就是别写别思考了。
以前的写的,慢慢搬家过来吧。
学习计划:
✅ learn python the hard way , nosetest的学习。
✅ head frist the python 第二章
知识点:
nosetest
因为是看了两部书,关于项目骨架有点乱,其实想了想,head first thepython 只是说了构建包,发布包。 如建立setup.py,
pip setup.py sdist
pip setup.py install
这样系统会建立bulid,bin等文件, 但是这是项目骨架吗?
书中没有说到, 另一本书, learn python the hard way , 提到的项目骨架也没有说撒是项目骨架。
百度了一下,也没有具体的定义, 不如自己定义,就是一个python模块正常所需要的模块框好了。
project(主目录)
- lixiang(系列目录)
- setup.py
_ projectname
__init__.py
- bin
-docs
-tests
__init__.py
name_test.py
以上是一个项目骨架的结构, 也许这是一个行业的惯例,也许是一个作者的习惯,作为一个新手,这个地方不影响继续学习,存疑吧,不深究。(?)
macos 下面的命令:
mkdir project
cd project
mkdir lixiang
cd lixiang
mkdir projectname
mkdir bin
mkdir tests
mkdir docs
touch projectname/__init__.py
touch tests/__init__.py
目录下, 建立setup.py , 看这里。
tests 建立test.py .
😖: __init__.py 是什么?
学习一个原则: 吸引你进行下一步操作吗? 不影响
这个百度一下理解超过10分钟。
百度一下:
在 python 中,如果当前目录中存在有 __init__.py 文件,则表示该目录为一个包(package),在包中,引用同级目录或子目录中的其它模块非常简单,直接使用 import 语句即可
同级目录下,没有__init__.py , 一样可以导入。
学海无涯, 你要问为什么这个有这个功能? 这个就是python的语法结构了, 研究这个似乎不是我们学习的主要目的,有些东西的理解必须等到自己全盘了解才知道。
学会克制好奇心也是非常重要的
根据书中, 输入nosetests, 发现几个问题, 在test目录下,或者删除__init__.py , test.py , nosetests的traceback 都没反应。。
-------------------------------------------------------
Ran 0 tests in 0.000s
OK
运行0个tests测试,这应该是缺乏test.py的原因。
加入test.py ,
from nose.tools import *
import printlist
def setup():
print "setup!"
def teadown():
print "tear down!"
def test_basic():
print " I RAN!"
测试nosetests 发现了
======================================================================
ERROR: Failure: ImportError (No module named printlist)
-------------------------------------------------------
在test目录上看看,nosetests
----------------------------------------------------------------------.
Ran 1 test in 0.007s
看到了吗, 测试了一个test. 我们来删除printlist下的 __init__.py
rm -f printlist/__init__.py
发现没有出错
继续:ls -R
发现
./printlist:
__init__.pyc
还是依旧无任何影响,__init__.py, 存在有何意义?
不懂,继续吧。
可以留下来, 在社区中提问, 还说继续前进吧。
看到书中的一句话, 有没有实际的代码给读者看。 作者回答很多python项目用了类似的结构,这个证明了,项目骨架没有统一的格式。
本课未解决: __init__.py 存在的 意义??
网友评论