我已经研究过其他python模块分发问题。我的需求有点不同(我想!我是python新手+)
我需要在远程计算机上执行一堆python脚本。这是目标环境的样子;
所以我喜欢做的是:
提前感谢!
答案 0 :(得分:3)
远程机器是否彼此相同?如果是这样,你能设置一个与远程机器有效相同的开发机器吗?
如果是这样,virtualenv
使这几乎变得微不足道。在您的开发计算机上创建virtualenv
,使用virtualenv
pip
副本将任何第三方模块安装到其中,在其中构建脚本,然后将整个环境复制到每个远程机器。
有三件事可能使它变得非常重要:
virtualenv
,则需要执行以下操作之一:
--relocatable
环境即可。请参阅“使环境可重定位”文档部分。virtualenv
本身和pip install --user virtualenv
(如果他们甚至没有pip
,则可以在此前几步)。这将使用户帐户处于永久更改状态。 (但幸运的是,您的用户帐户将会受到影响,所以谁在乎呢?)libxml2
lxml
),virtualenv
对此无效。实际上,您需要C库几乎完全相同(相同路径,兼容版本)。其他三种选择:
virtualenv
无法解决的问题,例如安装libxml2
),则可能更容易捆绑.egg / .tgz /第三方模块的任何文件,并编写一个脚本,为每个模块执行pip install --user
等等,然后你就完成了。py2app
,py2exe
,cx_freeze
等并非所有 都很复杂,特别是在简单的情况下,并且有一个点击即可执行文件可以复制周围比拥有明确的环境更容易。zc.buildout
是一个非常灵活且易于管理的工具,可以完成三种替代方案中的任何一种。主要缺点是学习曲线更加陡峭。答案 1 :(得分:2)
您可以使用virtualenv为项目创建自包含的环境。这可以包含您自己的脚本以及任何依赖库。然后,您可以使env可重定位(--relocatable
),并将其同步到目标计算机,激活它并运行脚本。
如果这些机器确实具有网络访问权限(不是互联网,而只是本地网络),您也可以将virtualenv放在共享位置并从那里激活。
它看起来像这样:
virtualenv --no-site-packages portable_proj
cd portable_proj/
source bin/activate
# install some deps
pip install xyz
virtualenv --relocatable .
现在可以将portable_proj
发送给其他计算机。