3. 开发环境搭建:Python虚拟环境配置、Docker部署Elasticsearch与Kibana、安装依赖库

说实话,很多初学者在搭建环境这一步就卡住了。我见过太多人花了两三天装包,最后发现版本冲突,心态直接崩了。嗯,这一章咱们就把这事彻底捋清楚。

我会带你一步步搞定三件事:Python虚拟环境、Docker部署ES和Kibana、以及核心依赖库的安装。这三件事说白了就是给知识库项目打好地基,地基稳了,后面盖楼才不慌。

3.1 Python虚拟环境:为什么必须搞?

你想想看,一个项目要装LangChain,另一个项目要装Flask,它们可能依赖同一个包的不同版本。如果不隔离,那就是一场灾难。我在项目中遇到过好几次,因为全局环境装了个新包,结果把旧项目的依赖搞崩了,排查了一整天。

虚拟环境就是干这个的——每个项目有自己的小天地,互不干扰。

3.1.1 创建虚拟环境

我个人习惯用 venv,它是Python自带的,不需要额外安装。操作很简单:

# 创建虚拟环境,命名为 fin_env
python -m venv fin_env

# 激活虚拟环境(Windows)
fin_env\Scripts\activate

# 激活虚拟环境(Mac/Linux)
source fin_env/bin/activate

激活成功后,命令行前面会出现 (fin_env) 的标识。这时候你安装的所有包,都只会在这个环境里生效。

小技巧: 我习惯把虚拟环境建在项目根目录下,取名 .venvenv,这样一眼就能看出来。记得把虚拟环境文件夹加到 .gitignore 里,别提交到代码仓库。

3.1.2 管理依赖

依赖管理是门学问。我见过有人直接把所有包都列在 requirements.txt 里,结果别人一装就报错。为什么?因为没锁定版本号。

正确的做法是:

# 生成当前环境的依赖清单(带版本号)
pip freeze > requirements.txt

# 别人拿到项目后,一键安装
pip install -r requirements.txt

举个例子,我的 requirements.txt 长这样:

langchain==0.1.0
transformers==4.36.0
elasticsearch==8.11.0
torch==2.1.0
注意: 千万不要用 pip freeze > requirements.txt 把系统全局的包都导出来。我曾经犯过这个错,结果别人装的时候发现一堆莫名其妙的包,还冲突。正确的做法是:先激活虚拟环境,再执行这个命令。

3.2 Docker部署Elasticsearch与Kibana

Elasticsearch(简称ES)是知识库的搜索引擎,Kibana是它的可视化界面。用Docker部署,说白了就是拉个镜像、跑个容器,几分钟搞定。

我个人强烈推荐用Docker Compose,因为它可以把ES和Kibana一起管理,省心省力。

3.2.1 编写docker-compose.yml

在项目根目录下创建一个 docker-compose.yml 文件:

version: '3.8'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
    container_name: es-knowledge
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ports:
      - "9200:9200"
    volumes:
      - es_data:/usr/share/elasticsearch/data

  kibana:
    image: docker.elastic.co/kibana/kibana:8.11.0
    container_name: kibana-knowledge
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch

volumes:
  es_data:

这里有几个关键点:

  • discovery.type=single-node:单节点模式,开发环境够用了
  • xpack.security.enabled=false:关闭安全认证,省得折腾证书
  • ES_JAVA_OPTS:限制内存,别让ES把电脑吃爆了

3.2.2 启动服务

# 启动ES和Kibana
docker-compose up -d

# 查看运行状态
docker-compose ps

# 查看日志
docker-compose logs -f elasticsearch

启动后,访问 http://localhost:9200 能看到ES的JSON响应,访问 http://localhost:5601 进入Kibana界面。

避坑指南: 我曾经在Mac上遇到过ES启动失败,原因是Docker分配的内存不够。解决办法是在Docker Desktop的设置里,把内存调到4GB以上。Windows用户也要注意,WSL2的内存限制同样会影响。

3.3 安装核心依赖库

依赖库的安装顺序有讲究。我建议先装PyTorch,再装Transformers,最后装LangChain。为什么?因为LangChain依赖Transformers,而Transformers又依赖PyTorch。按顺序装,能避免版本冲突。

3.3.1 安装PyTorch

PyTorch是深度学习框架,用来跑模型。去官网 pytorch.org 选择你的配置,复制命令即可:

# CPU版本(大多数开发环境够用)
pip install torch torchvision torchaudio

# GPU版本(如果有NVIDIA显卡)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

3.3.2 安装Transformers

Transformers是Hugging Face的库,提供了大量预训练模型:

pip install transformers==4.36.0

装完后可以验证一下:

python -c "from transformers import pipeline; print('Transformers安装成功')"

3.3.3 安装LangChain

LangChain是知识库的核心框架,负责编排LLM调用和文档处理:

pip install langchain==0.1.0
pip install langchain-community  # 社区扩展包
pip install langchain-openai     # OpenAI集成

3.3.4 安装Elasticsearch客户端

Python连接ES需要客户端库:

pip install elasticsearch==8.11.0

3.3.5 其他辅助库

pip install tiktoken          # Token计数
pip install pypdf             # PDF解析
pip install sentence-transformers  # 文本向量化
pip install chromadb          # 向量数据库(备用)

3.4 验证环境

全部装完后,跑一个简单的测试脚本,确保所有组件都能正常工作:

# test_env.py
from elasticsearch import Elasticsearch
from langchain.llms import OpenAI
from transformers import pipeline

# 测试ES连接
es = Elasticsearch("http://localhost:9200")
print(f"ES连接状态: {es.ping()}")

# 测试Transformers
classifier = pipeline("sentiment-analysis")
result = classifier("I love this course!")
print(f"情感分析结果: {result}")

# 测试LangChain
from langchain.llms import OpenAI
llm = OpenAI(temperature=0)
print("LangChain加载成功")
我的经验: 如果ES连接失败,先检查Docker容器是否在运行。用 docker ps 看一眼,如果容器没启动,用 docker-compose logs 看日志,90%的问题都能找到答案。

3.5 本章知识体系

下面这张图帮你理清整个开发环境的架构:

开发环境架构图 Python虚拟环境 (fin_env) 隔离项目依赖,避免版本冲突 核心依赖库 LangChain Transformers Elasticsearch PyTorch Docker容器服务 Elasticsearch (端口9200) Kibana (端口5601)

这张图展示了三层架构:最底层是Docker容器(ES和Kibana),中间层是Python依赖库,最上层是虚拟环境。每一层都独立运行,但又紧密协作。

好了,环境搭建就到这里。你跟着操作一遍,应该半小时内就能搞定。如果遇到问题,别慌,先看日志,再查文档,实在不行就重启——我当年就是这么过来的。


专注资料整理