当前位置: 首页 > news >正文

【小技巧】PyCharm建立项目,VScode+CodeX+WindowsPowerShell开发Python pyQT6 (二)

在这里插入图片描述

在这里插入图片描述


你的报错栈关键信息是:

ValueError: check_hostname requires server_hostname
...
urllib3.connection._connect_tls_proxy → ssl_wrap_socket(...)

这表示 pip 认为自己需要通过一个代理(HTTP/HTTPS_PROXY)连接 PyPI,但该代理配置不规范(常见是写成 127.0.0.1:7890 没有协议头),触发了“TLS 套 TLS”时未提供 server_hostname 的错误。解决思路:要么禁用代理再装,要么把代理写成正确格式 http://host:port

下面给你一套“从排查→修正→验证”的详细步骤(PowerShell):


一步一步来

0. 进入你的项目目录(你已经在)

cd C:\Users\xsshu\Desktop\Python\random_pro

1) 检查是否设置了代理(环境变量)

Get-ChildItem Env: | ? { $_.Name -match 'proxy' }

如果输出里有 HTTP_PROXY / HTTPS_PROXY(大小写都算),说明 pip 正在走这个代理。

2) 先在“当前会话”里临时禁用代理

(最简单、风险最低)

Remove-Item Env:HTTP_PROXY  -ErrorAction SilentlyContinue
Remove-Item Env:HTTPS_PROXY -ErrorAction SilentlyContinue

也可以一条命令在安装时显式禁用:--proxy=""(下面第 5 步会用到)

3) 检查 pip 的持久化配置里是否写了代理/镜像

pip 在 Windows 会读这些位置的配置:

  • 用户:%APPDATA%\pip\pip.ini
  • 全局:%PROGRAMDATA%\pip\pip.ini
  • 虚拟环境:.venv\pip.ini(少见)

逐个看看是否有 proxy = ...index-url = ...

Get-Content $env:APPDATA\pip\pip.ini -ErrorAction SilentlyContinue
Get-Content $env:PROGRAMDATA\pip\pip.ini -ErrorAction SilentlyContinue

如看到 proxy= 且值是 127.0.0.1:7890 这种没有协议头的,请改成 http://127.0.0.1:7890,或者直接先删掉这一行(禁用代理安装最稳)。

也可以用 pip 命令取消:

.\.venv\Scripts\python.exe -m pip config list
.\.venv\Scripts\python.exe -m pip config unset global.proxy
# 如需改回官方源也可以:
# .\.venv\Scripts\python.exe -m pip config set global.index-url https://pypi.org/simple

4) 验证你的虚拟环境是 64 位(已验证 OK)

你已经确认:

Python 3.9.6 / arch=64 / Windows 10

这满足 PyQt6 的轮子要求(win_amd64)。

5) 在禁用代理的前提下升级 pip 并安装包

任选其一(官方源或清华镜像),注意我加了 --proxy="" 强制忽略任何遗留代理:

用官方源:

.\.venv\Scripts\python.exe -m pip install -U pip wheel setuptools --proxy="" -i https://pypi.org/simple
.\.venv\Scripts\python.exe -m pip install PyQt6 pyserial --proxy="" -i https://pypi.org/simple

或用清华镜像:

.\.venv\Scripts\python.exe -m pip install -U pip wheel setuptools --proxy="" -i https://pypi.tuna.tsinghua.edu.cn/simple
.\.venv\Scripts\python.exe -m pip install PyQt6 pyserial --proxy="" -i https://pypi.tuna.tsinghua.edu.cn/simple

如果你在公司网络被 SSL 拦截导致证书不被信任,可以加上 --trusted-host

.\.venv\Scripts\python.exe -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn PyQt6 pyserial --proxy=""

6) 必须走代理时,把格式改正确再装

如果你确实需要代理,请务必带协议头(通常 http:// 即可):

# 仅对当次会话生效的示例
$env:HTTP_PROXY  = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890".\.venv\Scripts\python.exe -m pip install -U pip -i https://pypi.org/simple
.\.venv\Scripts\python.exe -m pip install PyQt6 pyserial -i https://pypi.org/simple

不要写成 127.0.0.1:7890(缺少 http://)或写成 https://127.0.0.1:7890(大多数本地代理只支持 HTTP CONNECT)。

如果想长期生效,可持久化:

setx HTTP_PROXY  "http://127.0.0.1:7890"
setx HTTPS_PROXY "http://127.0.0.1:7890"
# 关闭并重新打开一个 PowerShell 窗口后生效

7) 安装完成后验证

.\.venv\Scripts\python.exe -c "import PyQt6,serial; from PyQt6.QtWidgets import QApplication; print('PyQt6=',PyQt6.__version__)"

8) 兜底:离线安装(万一网络环境限制很严)

用浏览器下载与你环境匹配的三个 wheel(cp39、win_amd64):

  • PyQt6_sip-<ver>-cp39-cp39-win_amd64.whl
  • PyQt6_Qt6-<ver>-win_amd64.whl
  • PyQt6-<ver>-cp39-cp39-win_amd64.whl

然后在下载目录执行:

.\.venv\Scripts\python.exe -m pip install .\PyQt6_sip-*.whl
.\.venv\Scripts\python.exe -m pip install .\PyQt6_Qt6-*.whl
.\.venv\Scripts\python.exe -m pip install .\PyQt6-*.whl
.\.venv\Scripts\python.exe -m pip install pyserial

一条命令“快捷修复”(禁用代理→升级 pip→安装)

如果你想快速试一次(官方源):

$env:HTTP_PROXY=""; $env:HTTPS_PROXY="";
.\.venv\Scripts\python.exe -m pip install -U pip wheel setuptools --proxy="" -i https://pypi.org/simple && `
.\.venv\Scripts\python.exe -m pip install PyQt6 pyserial --proxy="" -i https://pypi.org/simple

执行完 5/7 步后再运行你的程序即可。若过程中任何一步仍抛同样错误,把命令返回完整粘给我,我直接帮你定位是哪一级代理还在生效。


安装已经成功了;现在这个报错是因为PyQt6 顶层没有 __version__ 属性,所以:

AttributeError: module 'PyQt6' has no attribute '__version__'

用下面方式查询版本即可。

正确的版本查看方式

方式1:用 pip show

.\.venv\Scripts\python.exe -m pip show PyQt6 PyQt6-Qt6 PyQt6-sip

会分别显示:

  • PyQt6(绑定包)版本
  • Qt6 运行库版本(PyQt6-Qt6)
  • SIP 版本(PyQt6-sip)

方式2:从 QtCore 里取(推荐)

.\.venv\Scripts\python.exe - << 'PY'
from PyQt6.QtCore import PYQT_VERSION_STR, QLibraryInfo
print("PyQt6 =", PYQT_VERSION_STR)
print("Qt6   =", QLibraryInfo.version().toString())
PY

顺便做个最小运行测试

.\.venv\Scripts\python.exe -c "from PyQt6.QtWidgets import QApplication,QLabel; app=QApplication([]); print('QApplication OK');"

运行你的程序

.\.venv\Scripts\python.exe .\main.py

如果还需要在 PyCharm 里跑,记得把解释器切到这个虚拟环境:
Settings → Project: random_pro → Python Interpreter → 选择 .venv\Scripts\python.exe

http://www.dtcms.com/a/585308.html

相关文章:

  • 办个人网站租空间餐饮网站建设的模板
  • 国家开发投资集团有限公司广州新站优化
  • MySQL数据类型详解
  • Rust 练习册 :Rail Fence Cipher与栅栏密码
  • 织梦dedecms绿色led照明公司企业网站模板 下载网站如何免费推广
  • 【Svelte】动态加载组件并传递参数的正确姿势,及两种方式比较
  • 【ZeroRange WebRTC】Amazon Kinesis Video Streams C WebRTC SDK 详解与实践指南
  • openEuler边缘计算实践:构建高效边云协同架构
  • 自建国外购物网站公司网站开发外包公司
  • Linux内存管理揭秘:页表递归清理与TLB优化机制
  • 从“医疗大模型”向“医疗智能体”架构与路径分析(白皮书草案-下)
  • Webpack性能优化终极指南:4步实现闪电打包
  • 零基础学JAVA--Day26(枚举类)
  • Kafka概述
  • CTFHub Web进阶-PHP:Bypass_disable_function通关8之PHP FFI
  • 重庆本地网站有哪些world做网站怎么做连接
  • 【028】Dubbo3从0到1系列之序列化机制
  • phpcms模板资源网站快速优化排名
  • 0 基础学前端:100 天拿 offer 实战课(第 18 天)—— JS 事件进阶:冒泡、委托与自定义事件,搞定复杂交互
  • 【C++】STL小总结
  • go基础语法练习
  • 360任意看地图网站网站开发设计需要什么证书
  • 大数据Spark(七十二):Transformation转换算子repartition和coalesce使用案例
  • Android 16 Kotlin协程 第二部分
  • 网站建设公司兴田德润电话新县城乡规划建设局网站
  • Claude Code使用指南
  • 如何进行MSSQL提权?默认库,xp_cmdshell提权
  • 第三章 布局
  • 「数据获取」《中国口岸年鉴》(2001-2024)(2002未出版)
  • Visual Studio笔记