3. 上位机开发环境搭建:Python环境配置、PyCharm安装与设置、依赖库安装

好,咱们正式开始动手了。这一章我带你把开发环境搭起来。别小看这一步,我见过太多人代码写了一半,才发现是环境没配好,白白浪费半天时间。咱们稳一点,一步到位。

3.1 Python环境配置

Python版本怎么选?我个人习惯用Python 3.8到3.10之间的版本。为什么?因为运动控制卡厂商提供的SDK,很多只在这几个版本上测试过。你装个3.12,可能连ctypes的某些接口都报错。

我的建议:直接装Python 3.9.13,这个版本兼容性最好。我手头五六种控制卡的例程,全都能跑。

安装步骤很简单,但有几个坑你得避开:

  1. 下载安装包:去python.org,找Windows installer (64-bit)。别下embeddable版本,那个是给嵌入式用的,缺一堆东西。
  2. 安装时勾选"Add Python to PATH"——这一步我强调一下,很多人忘了勾,后面在命令行敲python提示找不到,又回来重装。
  3. 验证安装:打开命令行,敲python --version,看到版本号就对了。
注意:如果你电脑上已经装了Anaconda,建议单独装一个纯净的Python给上位机开发用。Anaconda的环境管理有时候会和PyCharm的虚拟环境打架,我踩过这个坑。

3.2 PyCharm安装与设置

编辑器我推荐PyCharm Community Edition,免费版就够用。Professional版那些远程调试、数据库工具,咱们做上位机开发基本用不上。

安装完以后,有几个关键设置我建议你立刻改掉:

设置项 推荐值 为什么这么设
File > Settings > Project > Python Interpreter 选择你刚装的Python 3.9 确保项目用对解释器,不会跑到系统默认的旧版本上
Editor > General > Auto Import 勾选"Add unambiguous imports on the fly" 写代码时自动补全import语句,省时间
Tools > Python Integrated Tools > Default test runner 选择pytest 后面写单元测试时,pytest比unittest好用得多
Appearance & Behavior > System Settings > Project Opening 选择"New window" 多个项目同时打开时不会乱套

嗯,这里还要提一个我自己的习惯:给项目建虚拟环境。每个项目独立一套依赖,互不干扰。PyCharm里新建项目时,选"New environment using Virtualenv",Python版本指向3.9,后面所有依赖都装在这个虚拟环境里。

为什么一定要用虚拟环境?

你想想看,你同时做三四个项目,有的用pyserial 3.5,有的用3.7,全局装一个版本,总有一个项目要炸。虚拟环境就是给每个项目一个独立的小房间,各玩各的。

3.3 依赖库安装:pyserial, socket, ctypes

好,环境搭好了,现在装咱们的核心依赖。三个库,各有各的用处:

  • pyserial:串口通讯,跟控制卡通过RS232/RS485打交道
  • socket:网络通讯,控制卡走TCP/IP时用它
  • ctypes:调用控制卡厂商提供的DLL动态库

安装命令很简单,打开PyCharm的Terminal(确保虚拟环境已激活),依次敲:

pip install pyserial
pip install socket  # 其实socket是Python标准库,一般不用装
pip install ctypes  # 也是标准库,但某些精简版Python可能缺

等一下,socket和ctypes其实是Python内置模块。我为什么还要提?因为我在项目中遇到过,有人用了一个叫"embedable python"的版本,里面缺了ctypes,结果调用DLL时直接报ModuleNotFoundError。所以,装一下更保险。

验证是否装成功,在Terminal里敲python -c "import serial; print(serial.__version__)",看到版本号就说明pyserial装好了。socket和ctypes同理。

一个小技巧:把这三个依赖写进requirements.txt文件,以后换电脑部署时,一条pip install -r requirements.txt全搞定。文件内容就三行:
pyserial==3.5
socket
ctypes

3.4 本章知识体系总览

下面这张图,把咱们这一章的核心逻辑串起来了。你一看就明白,环境搭建不是瞎装,每一步都有它的目的。

上位机开发环境搭建知识体系 上位机开发环境搭建 — 知识体系 Python 环境 PyCharm 设置 依赖库安装 版本选择 3.9 PATH 环境变量 解释器配置 虚拟环境 pyserial 串口 socket 网络 ctypes DLL调用 核心逻辑 Python 提供运行环境 → PyCharm 提供开发效率 → 依赖库提供通讯能力 三者缺一不可,顺序不能乱

3.5 验证环境是否可用

装完别急着关。我习惯写一个简单的测试脚本,确认三个库都能正常导入:

# test_env.py
import serial
import socket
import ctypes

print("pyserial 版本:", serial.__version__)
print("socket 模块: 正常")
print("ctypes 模块: 正常")
print("环境搭建完成!")

在PyCharm里右键运行,看到三行输出就说明环境没问题。如果哪一行报错,回去检查对应的库有没有装对。

曾经有个学员问我:"为什么我import serial报错,但pip list里能看到pyserial?"——后来发现他开了两个命令行窗口,一个在虚拟环境里,一个在全局环境里。pip装到了虚拟环境,但运行脚本时用的是全局Python。所以,一定要在PyCharm的Terminal里操作,它自动绑定当前项目的虚拟环境。

好,环境搭完了。后面咱们就可以真正开始写代码,跟控制卡通讯了。你想想看,有了pyserial发指令、socket连网络、ctypes调DLL,基本上市面上九成的运动控制卡都能搞定。这一章打下的基础,后面每一章都会用到。