每天进步一点点:Windows下Python embeddable 安装
最近一直发旅游照片啦,朋友问我:“O哥你是不是从技术博主转型到旅游博主啦?”。其实O哥哪有啥技术,都是瞎折腾罢了。
(图源 :pixabay
话说,说到博主类型这个话题,O哥不但可以做旅游博主、伪技术博主,甚至还可以做美食(暗黑料理)博主、情感博主,所以其实O哥就是一个百变博主。
不扯淡了,言归正传,话说O哥在撰写旅游帖子时,照片都是精挑细选的,然后再用Paint(Windows自带画图软件)一张一张地调整大小。
为什么要调整大小呢?因为照片太大,上传到HIVE自带的图床会很慢,朋友们阅读时加载也慢,而且还有个缺点是浪费图床的空间,所以一般都将图片长宽调整为50%。
但是一张张调整实在是太累了,尤其是有时候四五十张照片,简直要累到吐血,所以如果能一键调整所有图片尺寸的工具,那么就太好了。
其实这样的工具也有很多,不过O哥有系统洁癖,所以打算自己弄一个,应该非常简单,再纠结了C++和Python语言后,决定选择Python语言。
虽然没少在Linux环境下使用Python,也在Windows环境下给儿子的电脑安装过Python,但是到我这里,系统洁癖又范了,我决定安装Python的可嵌入版本。
安装Python embeddable
首先到Python官网下载最新的Python,当前版本是Python 3.11.4,我们可以看到下载页面有好多选择:
根据我的系统情况,我下载的是Windows embeddable package (64-bit),亦即上图中,我圈红的部分。
下载成功后,是一个.zip文件,我将其解压并将其中内容复制到C:\Program Files\python-3.11.4-embed-amd64。(你可以自己选择路径,比如C:\Python)。
设置环境变量
进行到这里时,Python还不能正常使用,我们需要设置系统的环境变量来让系统正确寻找Python路径。
进入系统属性->高级标签页
选择底部位置的环境变量,进入如下页面:
选择上图Path条目并点击Edit按钮,然后将我们的路径加入其中:
好了,现在就可以使用Python啦。
使用PIP
成功安装了Python后,我们就可以使用Python的各种内置模块,但是如果想让Python发挥其强大功能,我们需要使用PIP来安装各种其它第三方模块。
但是我尝试使用python -m ensurepip却失败了,找了半天也没找到原因。无奈之下找到PIP的页面,发现除了ensurepip外,还可以通过以下两种方式安装:
- get-pip.py
- Standalone zip application
其中后者是下载一个独立的zip文件,然后可以以如下方式直接执行:
python pip.pyz --help
于是我下载了对应文件并将其复制到我的那个目录:C:\Program Files\python-3.11.4-embed-amd64
然后在命令行中进入到这个目录,就可以使用类似如下指令安装各种模块了,比如:
python pip.pyz install pillow
需要注意的是,如果你要安装到用户目录需要使用--user参数,如果安装到系统目录,可能会有权限问题,那么需要以管理员方式运行命令行。
路径问题
安装完pip以及pillow,原则上我们就可以使用强大的pillow模块了。
不过当我在Python环境中尝试如下语句:
from PIL import Image
直接被提示:
ModuleNotFoundError: No module named 'PIL'
网上有些教程让编辑python311._pth,并加入相应的路径,可是我试了N次都没试明白,后来将python311._pth改名(使其不工作),路径问题神奇地解决啦:
总结
Python embeddable 目的是用于嵌入到程序中执行,正常安装的话,还是建议使用安装包安装,会解决我遇到的所有问题。
因为系统洁癖,非要使用Python embeddable 来安装,浪费我大半天的时间,哭呀,没事瞎折腾个啥劲呢,净做无用功!
相关链接
Leave 每天进步一点点:Windows下Python embeddable 安装 to:
Read more #cn posts
Best Posts From oflyhigh
We have not curated any of oflyhigh's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.