繁体   English   中英

部署 python 命令行脚本的最佳方式?

[英]Best way to deploy a python command line script?

我在 python 中编写了一个 linux 文件传输脚本,它需要多个命令行/终端 arguments。 它可以在我的开发机器上运行,但是当我尝试在我的公司系统上运行它时,由于没有安装相同版本的 python 或未安装所有库,我收到了几个错误。

一个小时的谷歌搜索让我的初学者睁开了眼睛,了解了部署方法、容器、虚拟化、冻结等世界。除了一夜之间成为 docker 专家之外,让这个脚本在任何地方运行的最简单方法是什么?

如果您想避免虚拟化/Docker(这对我来说似乎没问题),您可能至少希望使用具有冻结依赖项的venv模块。 您可以使用pip提供适当的setup.py文件,轻松地直接从源代码部署(无需打包)。

我使用这种方法很长时间了,在许多服务器和许多不同的环境上进行了许多部署。 有几件事情需要考虑:

  • 您的代码需要与目标机器上可用的 Python 兼容。 我主要使用 Debian,所以我的代码必须经常向后兼容(Debian 相当保守)。

  • 您需要确保在部署期间安装的依赖项版本可以与您的脚本一起使用。 最简单的事情是在setup.py中冻结模块版本,但我一般不会这样做 - 较新的库版本通常可以工作。

  • 为每个项目(通常为每个存储库)单独的venv以避免冲突。 在我早期的 hPython 冒险中,我使用了一个 uber-virtualenv,但它完全是一团糟。 今天,多使用几兆字节来分隔环境已经不是什么大问题了。

  • 自动化部署(Ansible、Chef 等)来做无聊的事情,永远不要忘记重要的事情。 我正在使用 Ansible 来做很少重复的事情,比如系统配置(包、库、配置文件)和 Jenkins 用于重复的事情,比如项目部署(就像在适当的虚拟环境中运行pip一样简单)。

  • 对于类似守护进程的脚本(网络服务器、看门狗等),我使用的是supervisor ,它不仅适用于 Python 脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM