您推荐哪种 python 构建工具?[关闭]
-
22-08-2019 - |
题
我正在启动一个小型/中型 python 项目,可能是在测试驱动开发中。我的背景更多是C和java而不是python(我使用ant和makefile)
我知道在 python 中你可能不需要构建工具,但我会,因为我将使用 cython 和 PyInstaller (这个东西应该在几个不同的 UNIX 上工作,而不直接依赖于 python)并且我想要方便从 CLI 中选择测试、构建文档、也许检查依赖关系等。
有人 抱怨 python 缺少类似 make 的工具。我知道很少有工具存在,比如 斯康 和 摊铺机, ,但我想听听真实用户的声音,而不仅仅是他们的网站。有人用吗 摊铺机?
很多包自带的通常的setup.py 是怎么回事?我研究了一些,看看是否有共同的用法,但我没有发现任何有趣的东西(也许我使用了错误的例子)
您是否建议至少在开始时坚持使用我已经知道的东西(ant 和 Makefile)?如果是这样,您是否有推荐用于 python 的 ant 扩展(+cython+pyinstaller+pyUnit)?
编辑:为了避免像 jwp 那样的进一步答案,请注意,对于这个项目,我绝对需要我的程序是一个独立的可执行文件,因为它绝对是 不可能的 在运行可执行文件的目标平台上有一个 python VM。我有完全相同的硬件可用于编译,所以幸运的是我不需要交叉编译(但我会在更友好的 Linux 上进行开发)。
我还想测试我的代码是否从一开始就在 Cython 中编译,不是为了过早优化,而是为了确保我不会过度使用不兼容的功能,如果 Cython 需要进行痛苦的重构将是非常需要的。
所以请关注我的实际问题
其他提示
如果可能的话,我建议避免扩展模块(C/cython) 在一开始的时候. 。让你的所有代码都用Python编写,使用一个简单的 distutils
基于配置,使用运行测试 -m
(python -m mypkg.test.testall
, , 管他呢;进口 unittest
).
一旦你让你的项目达到舒适的状态,然后开始使用 cython 以及随之而来的额外项目管理来解决一些优化问题。distutils 可以构建扩展模块,所以我不确定你是否需要 make/scons..
project-dir/
setup.py
mypkg/
__init__.py
mymod.py
test/
__init__.py
testall.py
testsomething_specific.py
我喜欢的工具之一是 virtualenv: http://pypi.python.org/pypi/virtualenv
从网站:功效 virtualenv 是一个用于创建隔离 Python 环境的工具。要解决的基本问题是依赖关系和版本以及间接权限之一。假设您有一个应用程序需要 LibFoo 版本 1,但另一个应用程序需要版本 2。如何使用这两个应用程序?如果您将所有内容安装到 /usr/lib/python2.4/site-packages (或您平台的标准位置)中,很容易导致您无意中升级了不应升级的应用程序。
您还可以尝试: http://pypi.python.org/pypi/zc.buildout
从网站:Buildout 项目为创建应用程序(尤其是 Python 应用程序)提供支持。它提供了从多个部分、Python 或其他方式组装应用程序的工具。一个应用程序实际上可能包含多个程序、进程和配置设置。
尝试了几次,非常适合部署开发环境,但可能无法满足您的需求。
我还在一些地方被告知和读到,nose 是一个非常酷的测试工具http://somethingaboutorange.com/mrl/projects/nose/0.11.1/, ,我正在寻找一些空闲时间来尝试一下。
希望它有帮助 干杯 啤酒
为了避免像 jwp 那样的进一步答案,请注意,对于这个项目,我绝对需要我的程序是一个独立的可执行文件,因为在运行可执行文件的目标平台上绝对不可能有一个 python 虚拟机。我有完全相同的硬件可用于编译,所以幸运的是我不需要交叉编译(但我会在更友好的 Linux 上进行开发)。
我还想测试我的代码是否从一开始就在 Cython 中编译,不是为了过早优化,而是为了确保我不会过度使用不兼容的功能,如果 Cython 需要进行痛苦的重构将是非常需要的。
如果您想要的只是拥有一个独立的可执行文件,则无需运行 Cython。有一些很好的库可以做到这一点:
但是,要运行 Python 代码,您只需 必须 以某种形式或方式在目标计算机上安装解释器或虚拟机。我提出的解决方案仅涉及嵌入解释器以使其更易于安装。事实上,我非常确定(但可能是错误的)Cython 不允许您构建独立的可执行文件。它主要用于创建 Python 解释器的扩展。
然而,还有其他一些选择。如果目标机器上有 Java 解释器,则可以运行 Jython. 。还有一个 铁蟒 对于.net。但是,您仍然需要在项目中分发这些语言的运行时。
简而言之,如果您想要一个没有依赖项的独立可执行文件,您唯一的选择几乎就是直接使用 C 或 C++。