python - 我们如何在 windows 环境中构建和分发 python 脚本

标签 python python-3.x

我的团队很喜欢使用 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/

相关文章:

python - Keras 模型中的 Softmax 采样

python - 如何在tkinter上绘制递归树

python - 如何将 Django 模型上的属性(虚拟字段)公开为 TastyPie ModelResource 中的字段

python - 如果不在/api下则将404重定向到索引页

python-3.x - 如何在 pymongo 文档中观察更新的 bool 值?

python - 导入错误 : cannot import name 'BeautifulSoup4'

python - AttributeError: 'tuple' 对象没有属性 'write'

Python3.5/http/client.py 语法错误 : invalid syntax

python - 为什么在 python 3.5 中使用 asyncio 时出现被忽略的异常

Python 3 tell() 在追加+读取模式下与文件指针不同步