女公务员脱机玩转Python,怎么做到的?

218 阅读3分钟

微信公众号:愤怒的it男,超多Python技术干货文章。

一、写在前面的故事

今天我发现了一件很神奇的事情:一位很漂亮的美女公务员,坐在一台没有外网的电脑面前,优雅地敲着Python代码,而这台电脑装的还是32位win7这种老古董系统。凑近一看,竟然是用pandas第三方库处理着自己的工作表格。。。没有外网,系统渣渣,她是怎么在上面搭起Python开发环境的?如何安装pandas库的?还如此聪明,如此优雅,如此。。。美。。。

图1.jpeg 以下将以美女公务员的计算机环境为例,详细讲解如何脱机搭建Python开发环境并且安装pandas库。

二、离线安装Python

访问Python官方网站:www.python.org/downloads/,下载适合你操作系统的Python安装包。那怎么才知道适不适合呢?比如最新的Windows版的Python 3.12.0有32位和64位两种CPU架构安装包,适用于win7以上版本的Windows:

图2.PNG 这里下载的是Python 3.8.10中的32位安装包,更高版本已经不兼容win7了。

图3.PNG

安装时记得勾选Add Python 3.8 to PATH选项。

图4.jpg

安装完毕后,可以命令行执行查看Python和pip的版本。

图5.jpg

三、离线更新pip

pip是Python包管理工具,该工具提供了对Python包的查找、下载、安装、卸载的功能。当然,如果离线状态,那就没法查找和下载了,但是可以安装和卸载Python包(whl格式文件)。Python3.4及以后版本是自带pip的,而Python3.3及以前的版本需要手动安装pip。

前面已经知道了Python 3.8.10自带了pip 21.1.1。需要升级pip到最新版本,因为如果pip的版本太旧,可能很多Python包都无法安装。

访问Pypi官方网站:pypi.org/,搜索下载最新版pip的whl文件:pip-23.3.1-py3-none-any.whl(如何找到兼容版本的Python第三方库后面有讲),使用以下命令安装。

python -m pip install --upgrade pip-23.3.1-py3-none-any.whl

图6.jpg

四、离线安装第三方库

首先,应当查看当前环境(包括Python版本,操作系统版本,CPU架构等)的compatible tags。使用以下命令可查看:

pip debug --verbose

图7.jpg

然后,访问Pypi官方网站:pypi.org/,搜索下载能够兼容当前环境的pandas库的whl文件,whl名必须得包含compatible tags中的其中一个tag。比如pandas-2.0.3-cp38-cp38-win32.whl包含了cp38-cp38-win32。

最后,使用以下命令进行安装pandas

pip install pandas-2.0.3-cp38-cp38-win32.whl

图8.jpg

这里发现安装并没有成功,这是因为缺少python_dateutil依赖库,需要先安2.8.2或以上版本的python_dateutil依赖库,可使用以上方法找到对应的whl文件并安装。安装过程依次提示缺少six>=1.5、python_dateutil>=2.8.2、pytz>=2020.1、tzdata>=2022.1、numpy>=1.20.3依赖库,依次安装完这5个依赖库后,就可以成功安装pandas库了。

图9.jpg

如何快速判断依赖库

这里大家应该发现一个问题:上面的安装过程中,不能一次性知道所有缺少的依赖库分别是什么,得尝试一次安装才能下载一个依赖库,特别不方便。这里提供两种方法,以便大家在安装Python库前就可以知道其所有的依赖库。

  • 联网状态下安装一次Python库,安装日志中有其所有的依赖库信息。

图10.PNG

  • 联网状态下安装pipdeptree库,使用以下命令查看。
pipdeptree --warn silence -p pandas

图11.PNG

五、脱机玩转Python

到这里,Python环境就支棱起来了,pandas库也安装了,写段Python代码耍一耍:

import pandas as pd

# 创建一个空的DataFrame对象
df = pd.DataFrame(columns = ['平台','名称'])

# 定义要插入的数据
rows =[{'平台':'微信公众号', '名称':'愤怒的it男'},
      {'平台':'CSDN', '名称':'愤怒的it男'},
      {'平台':'知乎', '名称':'愤怒的it男'}]
for r in rows:
    df.loc[df.shape[0]] = r
print(df)

图12.jpg

微信公众号:愤怒的it男,超多Python技术干货文章。