目录

  1. Python 虚拟环境
  2. pip 包管理器
  3. npm 与 Node.js
  4. JavaScript 与 Node.js 的关系
  5. Python 与 Node.js 应用场景对比
  6. Requests 库
  7. Pandas 库
  8. 微信小游戏技术环境

一、Python 虚拟环境

1.1 虚拟环境的概念

虚拟环境是 Python 项目隔离依赖的工具。每个虚拟环境拥有独立的 Python 解释器和第三方库,避免不同项目之间的版本冲突。

python -m venv 创建的虚拟环境本质上就是一个文件夹,包含独立的 Python 文件和库。系统没有全局注册表记录虚拟环境的存在,因此无法通过一个命令查看所有已创建的虚拟环境。

1.2 常用命令

创建虚拟环境

python -m venv venv
python3.11 -m venv venv
python -m venv D:\my_projects\my_env

激活虚拟环境(Windows)

# CMD
venv\Scripts\activate

# PowerShell(可能需要先设置执行策略)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
venv\Scripts\Activate.ps1

# Git Bash
source venv/Scripts/activate

激活虚拟环境(macOS / Linux)

source venv/bin/activate

退出虚拟环境

deactivate

删除虚拟环境
直接删除虚拟环境文件夹即可。

# Windows
rmdir /s venv

# macOS/Linux
rm -rf venv

查看当前虚拟环境路径(激活状态下)

# Windows
echo %VIRTUAL_ENV%

# macOS/Linux
echo $VIRTUAL_ENV

1.3 虚拟环境与全局环境的关系

  • 虚拟环境创建时会复制一份当前全局 Python 环境中的 pip
  • 后续全局 pip 升级不会影响已存在的虚拟环境
  • 虚拟环境中的 pip 需要单独升级

在虚拟环境中升级 pip

python -m pip install --upgrade pip

1.4 查看虚拟环境的几种方法

由于 venv 没有全局注册表,可以通过以下方式查找:

  1. 按目录查找:检查项目根目录下是否有 venv、.venv、env 等文件夹
  2. 搜索 pyvenv.cfg 文件:每个 venv 虚拟环境根目录下都有此文件
  3. 使用 virtualenvwrapper 等工具集中管理

1.5 使用 --upgrade-deps 参数创建新环境

Python 3.9+ 支持在创建虚拟环境时升级依赖:

python -m venv 新环境名 --upgrade-deps

二、pip 包管理器

2.1 pip 升级

标准升级命令

python -m pip install --upgrade pip

遇到"To modify pip, please run"错误的处理
当直接使用 pip install --upgrade pip 时,pip 可能拒绝升级自身。应使用 python -m pip 方式:

python -m pip install --upgrade pip

指定完整路径升级

C:\Users\Administrator\AppData\Local\Programs\Python\Python313\python.exe -m pip install --upgrade pip

用户目录安装(避免权限问题)

python -m pip install --upgrade pip --user

升级到特定版本

pip install pip==25.0.1

2.2 查看 pip 版本

pip --version

2.3 查看已安装包

pip list
pip list --outdated  # 查看过时包

2.4 pip 工作原理说明

使用 python -m pip 与直接使用 pip 的区别:

  • pip install --upgrade pip:正在运行的 pip 程序试图替换自己,可能出错
  • python -m pip install --upgrade pip:用 Python 解释器调用 pip 模块,更稳定可靠

三、npm 与 Node.js

3.1 npm 是什么

npm 是 Node.js 的包管理器,类似于 Python 的 pip。安装 Node.js 时会自动安装 npm。

3.2 npm 常用命令对照

操作pipnpm
安装包pip install 包名npm install 包名
全局安装pip install 包名npm install -g 包名
开发依赖安装pip install -e .npm install --save-dev 包名
卸载包pip uninstall 包名npm uninstall 包名
列出已安装pip listnpm list
导出依赖pip freeze > requirements.txt自动在 package-lock.json
从文件安装pip install -r requirements.txtnpm install
升级包pip install --upgrade 包名npm update 包名
查看过时包pip list --outdatednpm outdated

3.3 pip 与 npm 的核心差异

依赖管理哲学

  • pip:全局 Python 环境加虚拟环境隔离,依赖扁平化
  • npm:每个项目独立依赖树(node_modules),支持嵌套版本

版本锁定

  • pip:requirements.txt 手动写版本号,传递依赖不强制锁定
  • npm:package.json 声明依赖范围,package-lock.json 自动锁定所有依赖的精确版本

安装位置

  • pip:默认全局安装,需要虚拟环境控制
  • npm:默认本地安装(项目目录)

安装速度与体积

  • pip:依赖较少,安装快
  • npm:node_modules 体积大(数百 MB 至 GB),安装较慢

3.4 依赖管理文件对比

pip 使用 requirements.txt:

requests==2.28.1
numpy==1.24.0

npm 使用 package.json + package-lock.json:

{
  "dependencies": {
    "express": "^4.18.0"
  }
}

四、JavaScript 与 Node.js 的关系

4.1 核心定义

  • JavaScript:一种编程语言(语法规则)
  • Node.js:JavaScript 在服务器端的运行环境(平台)

4.2 类比理解

Python 生态JavaScript 生态
语言PythonJavaScript
本地运行环境CPython (python.exe)Node.js (node.exe)
浏览器运行环境不支持浏览器(V8 引擎)
包管理器pipnpm
标准库os, sys, jsonfs, http, path

4.3 浏览器环境与 Node.js 环境对比

特性浏览器环境Node.js 环境
语言JavaScriptJavaScript
DOM 操作 (document)支持不支持
窗口对象 (window)支持不支持
文件系统 (fs)不支持支持
HTTP 服务器不支持支持
进程管理 (process)不支持支持

4.4 代码示例对比

JavaScript 语法在两端都支持:

const name = "张三";
console.log(name);

Node.js 特有 API(浏览器中报错):

const fs = require('fs');
fs.writeFileSync('hello.txt', 'Hello Node.js!');

浏览器特有 API(Node.js 中报错):

document.getElementById('myButton').click();

4.5 常见误区澄清

  • Node.js 是一门新语言:错误,它是 JavaScript 的运行环境
  • JavaScript 只能做前端:错误,Node.js 使其可用于后端开发
  • npm 与 Node.js 无关:错误,npm 是 Node.js 自带的包管理器
  • 学会 JavaScript 即学会 Node.js:错误,还需学习 Node.js 的 API 和生态

五、Python 与 Node.js 应用场景对比

5.1 Python 主要应用场景

数据分析与人工智能

  • 机器学习模型训练、数据清洗、量化交易、学术研究
  • 核心库:PyTorch、TensorFlow、Pandas、NumPy

爬虫与自动化脚本

  • 网页数据抓取、办公自动化(Excel/Word 批量处理)、GUI 操作
  • 核心库:Scrapy、Requests、Selenium

Web 后端开发

  • 知识付费平台、内容管理系统、科研机构官网
  • 框架:Django(大而全)、Flask(小而轻)

运维与 DevOps

  • 服务器自动化部署、日志分析

5.2 Node.js 主要应用场景

高并发 Web 后端与 API 网关

  • 大型电商秒杀系统、外卖 App 后台接口、直播弹幕
  • 适合做面向前端的数据聚合层(BFF)

实时通信应用

  • 在线聊天室、协同办公(如 Figma、腾讯文档)、游戏服务器
  • 核心库:Socket.io

前端工程化

  • 打包工具(Webpack/Vite)、代码检查、CSS 预处理

轻量级微服务与 Serverless(云函数)

  • 云函数(阿里云/腾讯云)、小型中间件

5.3 场景适用性对比表

场景分类PythonNode.js推荐
AI/大数据/数学计算统治级几乎不能做Python
爬虫/自动化办公库丰富较繁琐Python
企业级复杂后端Django 强大需自行拼组件二者皆可
高并发秒杀/抢票并发是短板天生异步Node.js
实时聊天/弹幕轮询消耗大WebSocket 王者Node.js
前端工程化完全无关唯一选择Node.js
脚本处理文件简单易懂也很快看习惯

5.4 各自的短板

Python 的短板

  • 全局锁(GIL)导致无法真正利用多核 CPU 进行密集计算
  • 不适合做高并发游戏服务器

Node.js 的短板

  • 底层缺乏 GPU 调度库,机器学习计算效率极低
  • 不适合做 AI/算法类任务

六、Requests 库

6.1 概述

Requests 是一个 HTTP 客户端库,用于发送网络请求(GET、POST 等),获取网页内容或调用 API 接口。它封装了 Python 内置的 urllib,提供更简洁的 API。

6.2 安装

pip install requests

6.3 核心用法

GET 请求

import requests

response = requests.get('https://api.github.com/users/octocat')
print(response.json())

POST 请求

payload = {'username': 'admin', 'password': '123456'}
response = requests.post('https://httpbin.org/post', data=payload)

添加请求头(模拟浏览器)

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
response = requests.get('https://www.example.com', headers=headers)

流式下载大文件

response = requests.get('https://www.example.com/largefile.zip', stream=True)
with open('largefile.zip', 'wb') as f:
    for chunk in response.iter_content(chunk_size=8192):
        f.write(chunk)

6.4 常用场景

  • 爬取网页数据
  • 调用第三方 API(天气查询、股票行情、大模型接口)
  • 自动化测试接口
  • 下载图片/文件

七、Pandas 库

7.1 概述

Pandas 是一个数据处理和分析库,核心数据结构:

  • Series:带标签的一维数组(类似 Excel 的一列)
  • DataFrame:带标签的二维表格(类似 Excel 的一张表)

7.2 安装

pip install pandas

7.3 核心用法

读取数据

import pandas as pd

df = pd.read_csv('sales_data.csv')
df = pd.read_excel('report.xlsx', sheet_name='Sheet1')
df = pd.read_json('data.json')

快速预览数据

df.head()          # 前 5 行
df.info()          # 列名、类型、空值情况
df.describe()      # 数值列的统计信息

筛选数据

df[df['销售额'] > 10000]
df[(df['城市'] == '北京') & (df['年龄'] > 30)]

分组聚合

df.groupby('城市')['销售额'].sum()
df.groupby(['城市', '产品类别']).agg({'销售额': 'sum', '销量': 'mean'})

新增/修改列

df['单价'] = df['销售额'] / df['销量']
df['是否达标'] = df['销售额'].apply(lambda x: '是' if x > 10000 else '否')

处理缺失值

df.dropna()          # 删除有缺失值的行
df.fillna(0)         # 填充缺失值为 0

导出数据

df.to_csv('processed_data.csv', index=False)
df.to_excel('processed_data.xlsx', index=False)

7.4 常用场景

  • 数据分析报告
  • 数据清洗(空值、重复值、格式转换)
  • 金融数据分析
  • 配合爬虫做数据存储和分析

7.5 Requests + Pandas 配合示例

import requests
import pandas as pd

# 抓取数据
url = 'https://api.example.com/stock/history?code=000001'
response = requests.get(url)
data = response.json()

# 数据分析
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
df['日均价'] = (df['high'] + df['low']) / 2
recent = df[df['date'] > pd.Timestamp.now() - pd.Timedelta(days=30)]
print(recent[['date', 'close', '日均价']].head())

7.6 学习建议

  • 不需要背诵所有函数,掌握常用 10 个操作即可
  • 使用 Jupyter Notebook 逐条运行代码学习
  • 用小数据集(Kaggle、和鲸社区)练手
  • 遇到报错先看最后一行错误信息

八、微信小游戏技术环境

8.1 核心结论

电脑微信上的小游戏不是基于 Node.js 开发的。它运行在微信提供的定制化 JavaScript 环境中,该环境既不同于浏览器也不同于 Node.js。

8.2 三种运行环境对比

运行环境核心能力平台/场景
Node.js文件读写 (fs)、网络服务 (http)服务器、开发工具
浏览器DOM 操作 (document)、窗口 (window)网页浏览
微信小游戏触摸事件、画布、音频等微信原生 API微信 App 内

8.3 小游戏环境特点

  • 没有 Node.js 特有的 API(fs、http 等模块不可用)
  • 没有浏览器特有的 API(document、window 不可用)
  • 使用微信提供的专用 API(如 wx.createCanvas、wx.createInnerAudioContext)

8.4 适配机制

为了让 Cocos、Layabox 等为浏览器设计的游戏引擎在小游戏中运行,开发者需要引入适配层(Adapter),用微信专用 API 伪装出浏览器的 document 和 window 对象。

8.5 底层技术

  • JavaScript:游戏逻辑代码
  • WebAssembly (WASM):核心逻辑(物理引擎、渲染)用 C/C++ 编写后编译为 WASM 运行
  • Worker:多线程处理繁重计算任务,避免卡顿
  • WebGPU:实现精美 3D 画面,突破 WebGL 渲染瓶颈

标签: none

添加新评论