Featured image of post Windows 开发语言环境实战:Python / Go / JDK / Miniconda3

Windows 开发语言环境实战:Python / Go / JDK / Miniconda3

Windows 平台主流开发语言环境:Python 3.6、Go 1.8、JDK 8/11、Miniconda3、Tesseract OCR、Elastic Stack 入门

一、2017 年 Windows 开发语言环境

2017 年的 Windows 开发语言环境呈"三国杀"——Python 3.6 时代数据科学爆发Go 1.8 进入云原生JDK 8 仍是 Java 主流JDK 9 模块化 / JDK 10 var)。本文整理 Python / Go / JDK / Miniconda3 这 4 个"环境配置工具"。

阅读建议:本文面向多语言开发者,重点在Windows 下的环境隔离 + 性能调优

二、Python 环境

2.1 Python 版本选型

版本时间状态
2.72010-07EOL 2020-01-01
3.52015-09EOL 2020-09
3.62016-12EOL 2021-12
3.72018-06EOL 2023-06
3.82019-10EOL 2024-10
3.92020-10EOL 2025-10
3.102021-10维护中
3.112022-10维护中
3.122023-10维护中
3.132024-10维护中

2017 推荐Python 3.6f-string类型注解成熟)。

2.2 Python 安装

官方 https://www.python.org/downloads/windows/

  • Embeddable:压缩包,适合便携
  • Installer:标准安装器
  • Windows x86-64:64 位(推荐
  • Windows x86:32 位(不推荐

安装时勾选

  • Add Python to PATH关键
  • Install launcher for all users

2.3 包管理 pip

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 升级 pip
python -m pip install --upgrade pip

# 装包
pip install requests flask numpy

# 指定版本
pip install django==4.2.0

# 导出依赖
pip freeze > requirements.txt

# 安装依赖
pip install -r requirements.txt

# 换源(国内)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

# pip config 永久换源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

2.4 虚拟环境

1
2
3
4
5
6
7
8
# venv(标准库)
python -m venv myenv
myenv\Scripts\activate      # Windows 激活
myenv\Scripts\deactivate    # 退出

# virtualenv(更强大)
pip install virtualenv
virtualenv myenv

2.5 实战:requests

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import requests

# GET
r = requests.get("https://api.github.com")
print(r.json())

# POST
r = requests.post("https://httpbin.org/post", json={"key": "value"})

# 设置代理
proxies = {
    "http": "http://127.0.0.1:1081",
    "https": "http://127.0.0.1:1081"
}
r = requests.get("https://example.com", proxies=proxies)

三、Go 语言

3.1 Go 版本演进

版本时间状态
1.02012-03EOL 2013
1.42014-12EOL 2016
1.52015-08编译器自举
1.62016-02HTTP/2
1.72016-08编译加速
1.82017-02GC 延迟降低
1.112018-08Go modules
1.132019-09errors.Is/As
1.182022-03泛型
1.212023-08性能优化
1.222024-02for range 增强
1.232024-08iter 包

2017 推荐Go 1.8

3.2 Go 安装

https://go.dev/dl/

  • go1.8.windows-amd64.msi
  • 默认装到 C:\Go
  • 自动加 PATH

环境变量

1
2
3
4
GOROOT = C:\Go
GOPATH = C:\Users\<USER>\go
GOPROXY = https://goproxy.cn,direct   # 国内代理
GO111MODULE = auto                     # Go 1.16+ 默认 on

3.3 Hello World

1
2
3
4
5
6
7
package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}
1
2
go run hello.go
go build hello.go

3.4 Go Modules

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 初始化模块
go mod init github.com/myuser/myapp

# 添加依赖
go get github.com/gin-gonic/gin

# 下载依赖
go mod download

# 整理 go.mod
go mod tidy

3.5 跨平台编译

1
2
3
4
5
6
7
8
9
# Windows 编译 Linux 二进制
SET GOOS=linux
SET GOARCH=amd64
go build -o myapp-linux

# Windows 编译 macOS
SET GOOS=darwin
SET GOARCH=amd64
go build -o myapp-mac

3.6 实战:HTTP 服务

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
package main

import (
    "fmt"
    "net/http"
)

func helloHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, %s!", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", helloHandler)
    http.ListenAndServe(":8080", nil)
}

四、JDK

4.1 JDK 版本选型

版本时间状态
82014-03主流LTS
92017-09模块化(非 LTS
102018-03var非 LTS
112018-09LTS
142020-03switch 表达式(非 LTS
172021-09LTS
212023-09LTS

2017 推荐JDK 8绝对主流),JDK 9 早期采用。

4.2 JDK 8 安装

  • Oracle JDK:商业授权(生产要订阅
  • OpenJDK:开源(Adoptium / Eclipse Temurin
  • Azul Zulu:开源 + 商业
1
2
3
# 验证安装
java -version
javac -version

4.3 环境变量

1
2
3
JAVA_HOME = C:\Program Files\Java\jdk1.8.0_xxx
PATH += %JAVA_HOME%\bin
CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

4.4 多个 JDK 切换

SDKMANLinux/Mac 友好)或 jenv跨平台):

1
2
3
4
5
6
7
# jenv
jenv versions
# 1.8
# 11
# 17

jenv global 11

Windows 上手动改 JAVA_HOME 是最常用方案。

4.5 Java 8 关键特性

  • Lambdalist.forEach(s -> System.out.println(s));
  • Streamlist.stream().filter(s -> s.startsWith("a")).count();
  • OptionalOptional.ofNullable(x).orElse("default")
  • Date/Time APILocalDate.now()

4.6 Java 11+ 新特性

  • var 关键字var list = new ArrayList<String>();
  • HTTP ClientHttpClient.newHttpClient()
  • 单文件运行java HelloWorld.java
  • ZGC:低延迟 GC

五、Miniconda3

5.1 定位

Miniconda 是 Anaconda 的精简版——只装 Python + conda 包管理器,不预装 200+ 数据科学包。适合

  • 数据科学 / 机器学习环境
  • 多 Python 版本共存
  • 不污染系统 Python

5.2 安装

https://docs.conda.io/en/latest/miniconda.html

  • Miniconda3-latest-Windows-x86_64.exe
  • 不要装到带空格的路径虽然支持

5.3 虚拟环境

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建环境
conda create -n myenv python=3.10

# 激活
conda activate myenv

# 退出
conda deactivate

# 列出环境
conda env list

# 删除
conda env remove -n myenv

5.4 包管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 装包
conda install numpy pandas scikit-learn

# 装 pip 包(混合用)
pip install requests

# 导出
conda env export > environment.yml

# 导入
conda env create -f environment.yml

5.5 国内镜像

1
2
3
4
5
# 清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --set show_channel_urls yes

5.6 conda vs venv vs pip

维度condavenvpip
虚拟环境
包管理
二进制依赖自动装 CUDA / MKL
包来源Anaconda 仓库PyPIPyPI
速度
跨平台

经验法则

  • 数据科学 / ML → conda(自动装 CUDA
  • Web 开发 → venv + pip
  • 包发布 → pip(PyPI 是事实标准

六、Elasticsearch 入门

6.1 安装

  • 官方https://www.elastic.co/downloads/elasticsearch
  • 历史版本 5.0+ 才支持 SQL
  • Windows ZIP 解压即用

6.2 启动

1
2
cd C:\elasticsearch-5.0.0\bin
elasticsearch.bat

首次启动会

  • 创建 elasticsearch 用户(Windows 要以管理员
  • 监听 9200HTTP)/ 9300节点间

6.3 基础操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 健康检查
curl http://localhost:9200/_cluster/health

# 索引文档
curl -X PUT "localhost:9200/my_index/_doc/1" \
  -H "Content-Type: application/json" \
  -d '{"title": "Hello", "content": "World"}'

# 搜索
curl -X GET "localhost:9200/my_index/_search?q=hello"

6.4 集群

1
2
3
4
5
6
# elasticsearch.yml
cluster.name: my-cluster
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node-1", "node-2", "node-3"]

七、Tesseract OCR 文字识别

7.1 安装

https://github.com/UB-Mannheim/tesseract/wiki

  • Windows 安装包
  • 勾选中文语言包chi_sim简体)/ chi_tra繁体
  • 加 PATH:C:\Program Files\Tesseract-OCR

7.2 命令行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 识别单张图
tesseract input.png output -l chi_sim+eng

# 识别 PDF
tesseract input.pdf output -l chi_sim+eng

# 输出带坐标的 hOCR
tesseract input.png output hocr

# 输出 TSV(**表格友好**)
tesseract input.png output tsv

7.3 Python 绑定

1
2
3
4
5
6
import pytesseract
from PIL import Image

img = Image.open("screenshot.png")
text = pytesseract.image_to_string(img, lang="chi_sim+eng")
print(text)

7.4 提升识别率

  • 预处理
    • 二值化cv2.threshold
    • 降噪cv2.medianBlur
    • 倾斜矫正cv2.warpAffine
  • DPI ≥ 300
  • 多语言组合chi_sim+eng
  • --psm 6 单块文本假设

八、组合实战

8.1 Python 数据科学环境

1
2
3
4
conda create -n ds python=3.10
conda activate ds
conda install numpy pandas scikit-learn matplotlib jupyter
pip install requests

8.2 Go + Docker 微服务

1
2
3
4
5
6
7
8
9
# 多阶段构建
FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o myapp

FROM alpine:3.18
COPY --from=build /app/myapp /myapp
CMD ["/myapp"]

8.3 Java 微服务

1
2
3
4
5
6
7
8
# Spring Boot
./mvnw spring-boot:run

# 打包
./mvnw clean package

# Docker
docker build -t myapp:1.0 .

九、常见问题

9.1 Python pip 装包失败

  • 换源国内
  • 升级 pippython -m pip install --upgrade pip
  • 编译器缺失:装 Visual C++ Build Tools

9.2 Go 编译慢

1
2
3
4
5
6
7
8
# 启用编译缓存
go env -w GOCACHE=C:\Users\<USER>\.cache\go-build

# 启用 module 代理
go env -w GOPROXY=https://goproxy.cn,direct

# 启用 module 缓存
go env -w GOMODCACHE=C:\Users\<USER>\go\pkg\mod

9.3 JDK 多版本切换

  • JAVA_HOME 改环境变量
  • 重新打开 PowerShell
  • 或用 jenvWindows 10+

9.4 conda 环境冲突

  • 删除重建conda env remove -n myenv && conda create ...
  • 清理缓存conda clean --all

9.5 Elasticsearch 启动报错

  • JVM 堆不够:调 config/jvm.options -Xms4g -Xmx4g
  • root 用户:需建 elasticsearch 用户
  • max_map_countsysctl -w vm.max_map_count=262144Linux

十、下一步

  • 想看 Python 深入:[2024-11-05 Python 入门:核心语法与环境管理]
  • 想看 Java 深入:[2014-04-15 IntelliJ IDEA 全攻略]
  • 想看 Go 微服务:[2017-10-15 ProtoBuf & gRPC 实战]

本文写于 2017 年,回看当时:Python 3.6 f-string 起飞、2017 是 Python 黄金时代的开端;Go 1.8 GC 改善、k8s 生态全面拥抱 GoJDK 9 模块化实验失败JDK 11 LTS 才是转折点Miniconda 至今仍是数据科学事实标准ES 5.0 是最大的版本断裂——5 款工具 10 年后仍是同类最强

使用 Hugo 构建
主题 StackJimmy 设计