需求
想在内网环境部署网页爬虫,内网的机器登录用户的权限很低,在Windows系统中的用户组仅为Poweruser,无法安装绝大多数软件,故考虑便携版。查了一下,99%的教程都是去python.org下载Windows installer然后跟着引导一步步傻瓜式安装,但我发现其实还有一个Windows embeddable package,下载后是zip格式,猜测可以解压即用,后来发现确实可以,不过感觉会有不少bug,而巧合的是此时正好发现有个WinPython项目,介绍语:
WinPython is a free open-source portable distribution of the Python programming language for Windows 8/10 and scientific and educational usage.
在下载页面瞥了一眼,发现除了区分64位和32位之外,还分为普通版(或者叫完整版)和dot版,观察文件大小发现dot版要小得多,猜测是精简版。先下载完整版,是7z自解压文件,749MB的压缩包解压后有4.01GB.。。。还是看看dot版吧。。。30.1MB解压完是157MB,还能接受,文件目录结构也和完整版大致相同,图示如下:
问题
对比python目录下的Lib文件夹发现dot版确实很精简,只有几个最基础的库,但这无需担心,后续可以很方便地自己安装,我想要的是根目录下的Spyder。完整版的Spyder.exe双击即可直接运行,但dot版的却不行,十分纳闷。在网上找了一圈,提到WinPython的文章都寥寥可数,有位仁兄提了一嘴“释放出来的目录下面也会有spyder.exe之类的可执行文件。不过如果你不自己手动安装的话,这些exe是点不开的。”我理解成了要按照一定的步骤“安装”WinPython,于是,对照官方文档指引查找问题所在,但文档提到的“安装”其实就是将文件解压出来,开箱即用,对于完整版而言确实如此,但如今dot版没这么简单。
找了大半天,无果,只能翻项目的issue,一百多个,终于找到一位仁兄提到了相关的问题:
Win10, WinPython64-3.8.3.0dot. Nothing starts except Python GUI.
(另外找到了dot版名称的含义)
综合其中contributor和其他用户的回答,得出原因大概是:本项目中的exe文件用NSIS打包,dot版精简掉了几乎所有在完整版内附带的程序及其依赖,但程序入口(类似快捷方式)还保留着,故而无法直接运行,需要后期手动下载方可使用。(检查发现根目录下的exe文件均不到1MB大小。。。看到这里我直接无语了,不知道该怪自己太笨还是开发者太懒。。。)
既然如此,那就动手安装试试:
python -m pip install spyder numpy scipy pandas matplotlib sympy cython
下载完之后Lib文件夹的大小直逼1GB。。。但Spyder总算可以运行了:
总结
原因:NSIS打包的精简版去掉了几乎所有附带的软件和依赖库,但保留了打包生成的程序入口。
解决方法:通过pip将相应的软件手动安装后即可正常运行。
谨以为记。