【Python】python安装packages
【Python】Python安装Packages:一份可复用的离线部署脚本

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
在服务器环境,尤其是网络受限或需要批量部署的场景下,手动一个个安装Python包简直是场噩梦。依赖冲突、版本不对、下载超时……这些问题,想必不少运维和开发朋友都深有体会。
今天,我们就来拆解一个非常实用的Shell脚本。它不仅能帮你一次性搞定多个核心Python包的离线安装,更重要的是,它提供了一套清晰的思路:如何规划安装目录、如何指定Python解释器、以及如何实现安装后的环境清理。掌握了这套方法,你完全可以举一反三,定制属于自己的依赖部署方案。
脚本核心逻辑解读
先来看脚本的整体框架。它的逻辑非常直接,可以概括为四个步骤:准备专属安装目录、定位Python解释器、循环安装所需包、最后清理临时文件。这种“初始化-执行-收尾”的结构,保证了脚本的整洁和可复用性。
脚本开头定义了两个关键变量:
#!/bin/sh
## 依赖包安装目录
INSTALL_DIR=$(pwd)/install_dir
if [ ! -d $INSTALL_DIR ]; then
mkdir $INSTALL_DIR
fi
cd $INSTALL_DIR
## python版本
PYTHON=/home/admin/.pythonbrew/pythons/Python-2.7.[0-9]/bin/python
这里有几个细节值得注意。一是使用$(pwd)/install_dir来定义绝对路径,这比相对路径更可靠,避免了执行位置不同带来的问题。二是对目录存在性的检查,避免了重复创建。最关键的是PYTHON变量的定义,它精确指向了通过pythonbrew管理的Python 2.7环境。这确保了所有包都将安装到同一个解释器站点目录下,杜绝了环境混乱。
批量安装:以Tornado为例
接下来,脚本进入了核心的安装循环部分。我们以安装Tornado为例,看看它是如何完成的:
## 安装tornado
wget https://pypi.python.org/packages/source/t/tornado/tornado-4.2.tar.gz --no-check-certificate
tar -xzf tornado-4.2.tar.gz
cd tornado-4.2
$PYTHON setup.py build
$PYTHON setup.py install
cd ..
这个过程是不是很眼熟?其实就是把手动操作的命令自动化了:下载源码包、解压、进入目录、编译构建、最后安装。脚本中使用了--no-check-certificate参数来绕过某些环境下的SSL证书验证问题,这是一个很实用的小技巧。每个包的安装都遵循相同的模式,结构清晰,易于维护和扩展。
关键包的选择与替代方案
脚本安装的包列表颇具代表性,覆盖了网络服务、并发、HTTP请求、自动化测试和图像处理等常见需求:
- Tornado: 高性能的Python Web框架和异步网络库。
- Futures: 为Python 2.7提供了Python 3风格的
concurrent.futures模块,用于并发执行。 - Requests: “人类可用”的HTTP库,简化网络请求。
- Selenium: 浏览器自动化工具,常用于Web测试。
- Pillow: 这里脚本注释明确指出“代替安装PIL”。PIL已停止维护,Pillow是其兼容且活跃的替代分支,这是处理图像的正确选择。
- Six: 提供Python 2和3兼容性函数的库,许多现代包都依赖它。
这个组合非常经典,搭建一个具备Web服务、并发处理、外部接口调用和自动化测试能力的Python环境,这些包往往是基础。
环境清理与最佳实践
所有包安装完毕后,脚本执行了最后一步,也是体现其设计周全的一步:
## 删除安装目录
rm $INSTALL_DIR -rf
删除临时安装目录install_dir。这有什么好处呢?首先,它清理了下载的源码压缩包和解压后的文件夹,释放磁盘空间。其次,它避免了这些中间文件残留可能造成的混淆,保持工作区的整洁。这是一种良好的实践,尤其是在生产部署脚本中。
如何定制你的脚本?
看到这里,你应该已经掌握了这个脚本的精髓。它就像一个模板,你可以根据实际需求轻松修改:
- 更换Python路径: 将
PYTHON变量指向你的实际Python解释器路径(例如/usr/bin/python3)。 - 增删安装包: 在循环部分,按照同样的格式(下载-解压-进入目录-安装)添加或删除你需要的包。注意调整版本号和下载URL。
- 调整安装选项: 你可以在
setup.py install阶段添加参数,比如--user安装到用户目录,或者--prefix指定自定义路径。
最后要提醒的是,在运行任何脚本前,尤其是包含rm -rf这样的命令时,务必确认路径变量是正确的,这是一个基本的安全习惯。将这个脚本保存下来,稍作调整,下次部署环境时你就能从容不迫了。
相关攻略
如何解决Python爬虫入库时的SQL注入隐患:使用SQLAlchemy参数映射 SQLAlchemy的text()配合:param参数映射之所以安全,是因为数据库驱动会将参数值作为纯数据传入,完全不参与SQL语法解析,从而避免了结构篡改;而错误地使用f-string进行拼接,则会直接导致注入漏洞。
本文提供在 Dash 应用中通过 Tabs 组件分页展示多个 Python 源码文件的完整解决方案,有效解决代码换行丢失、语法高亮缺失、可读性差等常见问题,推荐使用 html Code + html Pre 原生组合或 dash_mantine_components Code 组件实现专业级代码渲染
随着数字化转型的加速,RPA(机器人流程自动化)和Python成为了各行各业的重要工具。然而,对于很多人来说,选择RPA还是Python是一个难题。本文将从性能、可定制性、可扩展性等方面对两者进行比较,以帮助您做出决策。 一、性能 说起性能,得先看它们各自擅长做什么。RPA的核心能力,在于搞定那些基
Python字符串定义全解析:单引号、双引号与三引号的正确用法 在Python编程中,字符串是用于表示文本数据的基本数据类型,它本质上是一个由字符组成的序列。要创建一个字符串,我们需要使用特定的引号将字符内容“包裹”起来。本文将系统讲解Python中单引号(‘ ’)、双引号(“ ”)以及三引号(
Python获取本机所有网卡IP MAC地址的三种方法 在Windows、Linux、MacOS三大主流操作系统上,如何用Python精准获取所有网络适配器的信息?今天要聊的这三种方案,完美适配多网卡场景,不仅能拿到IP和MAC地址,连网卡名称、子网掩码这些细节也一并搞定。代码都是开箱即用的,直接复
热门专题
热门推荐
微软调整XGP战略:降价与《使命召唤》延期入库的背后 最近游戏圈有个大消息:微软宣布下调Xbox Game Pass Ultimate和PC Game Pass的月度订阅价格。具体来看,Ultimate档位从每月29 99美元降到了22 99美元,PC Game Pass则从16 49美元降至13
2026年,Xbox新掌门的第一把火:Game Pass要变“自助餐”了 2026年2月,阿莎·夏尔马接棒菲尔·斯宾塞,成为Xbox的新任CEO。这位新官上任,动作可谓雷厉风行。就在昨天,她点燃了第一把火:Xbox Game Pass Ultimate的月费,从29 99美元直接降到了22 99美元
当明星演员想开游戏工作室:资深同行为何直言“别这么做”? 最近,游戏圈里发生了一场有趣的隔空对话。为《最后生还者》《死亡搁浅》等大作献声的知名演员特洛伊·贝克,在采访中透露了一个雄心勃勃的计划:他想创立自己的游戏工作室,去讲述“自己的故事”。他甚至提到,自己的灵感来源之一,正是曾为《刺客信条:起源》
Steam新款手柄评测视频意外流出,定价信息同步曝光 游戏硬件圈最近有个不大不小的“意外”。根据海外多个科技消息源的报道,Valve即将推出的新款Steam Controller手柄,其评测视频竟然提前在网上泄露了。更关键的是,视频里还直接公布了这款产品的售价:99美元。 事情是这样的:一个名为“T
此前,外网消息源透露,目前PlayStation在PS4和PS5的数字版游戏中加入了DRM验证(正版在线验证)机制。 前情提要>> 简单来说,这个新机制的效果是这样的:从今往后,如果你通过数字商店购买新游戏,那么主机就必须定期连接到PSN网络进行正版验证。具体规则是,如果主机连续超过30天处于离线状





