![](/img/trans.png)
[英]What is the best way to test the validity of command line input to script in 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.