如何在没有安装Python的Windows服务器上运行Python程序?
我写了一个Python脚本,做一些简单的事情。最开始打算在一个Unix服务器上运行,但由于网络安全设置太差,相关负责人不愿意改动,所以我们需要在Windows服务器上运行它。不过,那个Windows服务器的管理员不愿意帮忙安装Python。
那么,我在Windows上运行Python脚本而不安装Python,有什么选择呢?
考虑方案一:
可以试试Py2Exe。我在网上搜索后发现这个,看起来很有希望。根据我的了解,它会生成一堆文件,我们可以把这个文件夹直接复制到Windows机器上,这样就完全独立,不会有外部依赖。有人知道这个方法效果如何吗?当然,这要看我的Python脚本,但幸运的是,这个脚本很简单,只用了Python自带的库,比如urllib2和urlparse。
考虑方案二:
我们可以假设Windows服务器上至少安装了某个版本的.NET框架,这让我想到了IronPython。我之前从没用过这个,但一直想试试。根据我的了解,它会把Python代码编译成符合CLS标准的IL代码,可以在.NET运行时下直接运行。不过,这需要在服务器上安装额外的.NET库吗?我能把那些DLL文件和我的程序打包在一起吗?还是说我需要重写我的Python脚本,让它调用.NET框架特定的类,而不是使用像urllib2或urlparse这样的库?
谢谢!
附言 - 讽刺的是:我其实对Python了解不多,但对.NET很熟悉,我写这个脚本是因为被告知它会在Unix服务器上运行。如果我知道最后要在Windows服务器上运行,我一开始就会用C#写,时间大概只需要十分之一。真是失败。
1 个回答
他们会让你把可执行文件复制到服务器上吗?如果可以的话,你就可以在不需要管理员权限的情况下安装Python,或者使用Portable Python,这个工具可以直接复制到一个文件夹里,不需要任何安装。
使用Py2exe没有问题,但这意味着每次你更新脚本时,都得重新把它打包成一个新的可执行文件。而且,Py2exe的启动时间比普通的Python解释器稍长,因为它每次运行时都要把Python的dll文件提取到一个临时文件夹里;当然,这个问题只有在你频繁运行脚本的时候才会显得重要。