作为一名长期从事Python编程的程序员,我想知道,如果Python文化的一个核心方面在很长一段时间里没有出现:我们应该做什么来代替makefile?
我见过的大多数ruby项目(不仅仅是rails)使用Rake,在node.js流行之后不久,就有了cake。在许多其他(编译和非编译)语言中,都有经典的Make文件。
但在Python中,似乎没有人需要这样的基础设施。我随机选择了GitHub上的Python项目,除了安装之外,它们没有自动化,由setup.py
提供。
这背后的原因是什么?
没有什么可以自动化的吗?大多数程序员喜欢手动运行样式检查、测试等吗?
一些例子:
dependencies
设置virtualenv并安装依赖项check
调用pep8
和pylint
命令行工具。test
任务依赖于dependencies
启用virtualenv,启动selenium服务器进行集成测试,并调用nosetest
coffeescript
将所有咖啡脚本编译为小型javascriptrunserver
任务依赖于dependencies
和coffeescript
deploy
任务依赖于check
和test
并部署项目。其中有些只是一两句台词,但总的来说是。由于Makefile,我不需要记住它们。
要澄清的是:我不是在为Rake寻找一个Python等价物。我很喜欢摊铺机。我在找原因。
实际上,自动化对Python开发人员也很有用!
Invoke可能是最接近您所想的工具,用于自动化常见的重复Python任务:https://github.com/pyinvoke/invoke
使用invoke,您可以创建这样的tasks.py(从invoke文档中借用)
然后可以在命令行运行任务,例如:
另一种选择是简单地使用Makefile。例如,Python项目的Makefile可能如下所示:
^{} 可以自动处理很多事情,对于不是内置的事情,它很容易扩展。
setup()
调用添加test_suite
参数后使用setup.py test
命令。(documentation)install_requires
/extras_require
/dependency_links
调用添加setup()
参数来处理。(documentation).deb
包,可以使用^{但是我同意
S.Lott
,大多数您希望自动化的任务(除了依赖项处理,这可能是我发现唯一真正有用的任务)都不是每天都运行的任务,因此通过自动化它们不会有任何真正的生产力改进。不是真的。除了两个例子之外,所有的例子都是单行命令。
tl;dr很少有真正有趣或复杂的事情。这些似乎很少从“自动化”中受益。
由于文档的原因,我不需要记住执行此操作的命令。
是的。
这是一行代码。自动化没有多大帮助。
sphinx-build -b html source build/html
。那是剧本。用Python编写。我们很少这样做。一周几次。在“重大”变化之后。
我们不会这么做的。我们使用单元测试而不是pylint。 你可以把这三步过程自动化。
但我知道SCons或make如何帮助这里的人。
这里可能有“自动化”的空间。它有两行:非Django单元测试(
python test/main.py
)和Django测试。(manage.py test
)。自动化可以应用于运行两条线路。我们每天做几十次。我们从来不知道我们需要“自动化”。
很少这样做,以至于我们只需要一个简单的步骤列表。我们非常,非常仔细地跟踪我们的依赖关系,所以从来没有任何意外。
我们不会这么做的。
把
start server & run nosetest
作为两步“自动化”有一定的意义。这样可以避免您输入两个shell命令来运行这两个步骤。这对我们来说是很罕见的。我想这是自动化的一个很好的例子。自动化单行脚本可能会有帮助。
我知道SCons或make如何帮助这里的人。
除了。依赖关系很少改变,所以这看起来有点过头了。我想这可能是一个好主意,你没有跟踪依赖关系在一开始。
它是服务器上的一个
svn co
和python setup.py install
,然后是从subversion区域到客户/www
区域的一组客户特定副本。那是剧本。用Python编写。这不是一般的做工或烤饼之类的东西。它只有一个参与者(一个系统管理员)和一个用例。我们永远不会将部署与其他开发、QA或测试任务混为一谈。
相关问题 更多 >
编程相关推荐