如何使特定代码段可移植以通过管道在不同系统上运行?

如何使特定代码段可移植以通过管道在不同系统上运行?

很多时候,当我搜索问题的解决方案时,我最终会找到如下代码行:

curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -

这是一行代码,用于测量我与 python 脚本一起使用的互联网连接速度。我知道在不知道代码在我的计算机上做什么的情况下运行这样的代码行会存在安全隐患。然而,当我开发了一段代码并且我只想将其用于个人用途时,这不是问题,而且它非常方便,因为我可以轻松地运行我在不同系统上创建的特定功能,而无需担心在系统上安装东西。

在本例中,它是一个 python 脚本,但从它的大小来看,我假设某些库已集成到同一个脚本中,这样它就可以像这样执行了。所以,我的疑问是:如何将python代码集成到单个文件中?有命令行吗?假设我正在使用一个不属于标准库的特定库,例如geopandas.有什么方法可以自动将其合并到我的脚本中吗?

二进制解决方案能否使其在不同系统之间更加可移植?只是为了让我可以通过这样的管道执行任何语言编写的代码吗?

答案1

理论上你可以将它们包含在你的脚本中,但我强烈建议不要这样做。根据模块的不同,您的脚本将会很大。

您可能还需要特定的 python 版本或其他要求。
通常最好添加一个小的README.md先决条件说明并包括Arequirements.txt通过 轻松安装pip

然后你可以像这样一口气运行:

pip install -r <(curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/requirements.txt) \
&& curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -

或者

git clone https://github.com/sivel/speedtest-cli.git
cd speedtest-cli
pip install -r requirements.txt
python speedtest.py

后者还可以更轻松地通过简单的git pull.

(实际上这是一个不好的例子,因为该存储库包含一个安装脚本并README.md解释了所有内容,但我只是忽略了这个事实......)

相关内容