如何在linux中为共享的公司环境部署一个简单的python应用程序?
我已经用python(在linux下)编写了一个(显然)优秀的工具,我想与我的同事分享。我们在不同的机器上工作,但使用相同的共享环境。此外,我们是用户,因此无法轻松安装依赖项 现在有个问题: 我喜欢python,我的用户不在乎。他们确实可以访问公司范围内的python安装(一个简单的安装),但他们不想在意(这是可以理解的,不是每个人都是程序员) 问题是: 在这样的共享环境中,python解释器可用,但我的应用程序的模块不可用,那么与其他用户共享我的工具的最简单方式是什么 正如您所想象的,我的用户不想安装任何东西(特别是在用户空间中),配置path可能会被接受。 解决方案不应该像冷冻一样包装所有东西,这可能是一种过度杀伤力 对于用户来说,应该是:复制某个tar.gz或转到应用程序文件夹(共享),运行应用程序,完成 那么,也许模块应该以某种方式嵌入到应用程序中? 或者我应该(在共享的家中)在库中托管模块并设置一些路径? 或者,如果用户可以用路径复制整个env,virtualenv可能会有所帮助 我希望你看到我的问题:D如何在linux中为共享的公司环境部署一个简单的python应用程序?,python,linux,deployment,Python,Linux,Deployment,我已经用python(在linux下)编写了一个(显然)优秀的工具,我想与我的同事分享。我们在不同的机器上工作,但使用相同的共享环境。此外,我们是用户,因此无法轻松安装依赖项 现在有个问题: 我喜欢python,我的用户不在乎。他们确实可以访问公司范围内的python安装(一个简单的安装),但他们不想在意(这是可以理解的,不是每个人都是程序员) 问题是: 在这样的共享环境中,python解释器可用,但我的应用程序的模块不可用,那么与其他用户共享我的工具的最简单方式是什么 正如您所想象的,我的用户
谢谢 您的应用程序的性质是什么?这是一个简单的“插入一些值,得到一个答案”之类的事情吗?还是更具互动性/图形化?如果是前者,您的应用程序可以打包为上的实用程序。然后您的用户可以通过标准浏览器访问您的应用程序。您可以使用pyinstaller创建独立的可执行文件
见:http://www.pyinstaller.org/假设您的标准安装是Python2.6或更高版本,并且不使用任何C扩展模块,您可以将其全部放入zipfile中,包括一个
\uuuuuu main\uuuuuuuuy.py
文件,然后在zipfile前添加一个shell头。您的场景正是添加此功能的原因
有关如何设置的更多详细信息,请参阅。有关“相同的共享环境”,您可以执行以下操作:
脚本安装到/your/shared/home/virtualenv
$ pip install your-app.tar.gz -E /your/shared/home/virtualenv
$ ln -s /your/shared/home/virtualenv/bin/your-script /shared/app/folder/
/shared/app/folder/Your script
调用,或将/shared/app/folder/
添加到路径
- 您可以通过控制符号链接指向的位置来选择脚本的可用版本。旧版本可以作为
/your/shared/home/virtualenv Old version/bin/your script运行
- 您可以使用用C编写的Python扩展
- 如果您通过
;它使您的工作目录中的版本可用pip install-e安装到virtualenv中。
一般来说,安装Python应用程序不是一个更好的选择。在这种情况下,共享环境意味着什么?是否安装了setuptools或Distribute?否,既不安装setuptools也不安装Distribute…共享环境意味着用户在同一基础结构上工作,具有(基于网络的)具有unix权限的项目目录,然而,在标准unix中,每个用户都有一个单独的“用户”环境,因此必须自己设置它。这里的意思是用户可以使用系统范围的python,但需要做额外的工作来配置它以满足他们的需要。@ronszon:“用户在相同的基础设施上工作”。为什么不能更新这个公共基础结构?这就是为什么它很普遍。是什么阻止了你简单地更新普通的东西呢?好吧,这当然会起作用,但这是我想要避免的过度部署类型。因为环境是“共享的”(python解释器对每个人都可用),我不认为有必要将它再次嵌入包中……这将非常酷(我已经在考虑为我的应用程序制作一个web界面,这绝对是最容易使用的),但我是否纠正了这一点,在他们的服务器上工作?那么这是不可能的,它必须在内部网上工作。。。该应用程序也很简单,基本上以excel文件作为输入,并在此基础上解析和创建其他语言脚本。但这意味着有可能上传一个excel文件…是的,这可能就是它!我认为应该有一种VirtualNV方式,但不能真正将其转化为代码(在python中仍然很新鲜)。周末后我会试一试。事实上,与冻结的替代方案相比,这种方法可以让代码保持活力……按照你的建议,工作起来很神奇。事实上,我没有想象到virtualenv的力量。谢谢