我的团队很喜欢使用 Python 来解决我们的业务问题。我们编写了许多小型独立脚本应用程序。
但是,我们必须有一个中央窗口框来运行这些以及遗留应用程序。
我们的挑战是完成构建和部署过程。
我们想让 Bamboo 从 git 中检查脚本,安装需求并运行测试,然后如果一切正常,就部署到我们的生产环境中。
我们希望脚本与脚本之间的库相互隔离,这样我们就不会有依赖性问题。
我们试图让 virtualenvs 变得可移植,但这似乎行不通。
Pex 看起来很有前途,但它不适用于 Windows。
理想情况下,您会看到这样的文件夹:
AppOne
/Script.py
/Libs
/bar.egg
/foo.egg
AppTwo
/Script2.py
/Libs
/fnord.egg
/fleebly.py
我们是不是想错了?在企业内分发脚本的 Pythonic 方式是什么?
最佳答案
如果相对不为人所知,你也许可以用一个简洁的方式来做到这一点 feature那是sneaked into Python 2.6事不宜迟:将 zip 文件作为 Python 应用程序执行。在PEP 441 之后它得到了一点(只是一点)更多的宣传。 (这是 PEX 的灵感来源),尽管我认为大多数人仍然没有意识到它。这个想法是您创建一个 zip 文件(对于窗口应用程序,推荐的扩展名是 .pyz
或 .pyzw
,但这显然并不重要),其中包含所有代码和模块你想要的,然后你只需用 Python 运行它。解释器会将 zip 文件的内容添加到 sys.path
并查找名为 __main__
的顶级模块并运行它。 Python 3.5 甚至引入了便捷模块 zipapp
创建这样的打包应用程序,但实际上并没有什么魔力,您也可以手动或脚本创建它。
在您的情况下,我猜 Bamboo 可以在 virtualenvs 中执行 check out 、依赖项安装和测试,然后将应用程序与环境库一起打包。它不是一键式解决方案,但无需其他工具也可以解决问题。
关于python - 我们如何在 windows 环境中构建和分发 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42026643/