一、技巧
1.1 镜像元安装指令:
pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com xxxx
1.2 唤醒虚拟环境
.\venv\Scripts\activate
1.3 解决包不兼容问题
pip install --use-deprecated=legacy-resolver somepackage
1.4 镜像源批量安装库
pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com -r requirements.txt
文件里内容写法举例(名称 == 版本号)
accelerate==0.16.0
aiohttp==3.8.4
aiosignal==1.3.1
async-timeout==4.0.2
attrs==22.2.0
bitsandbytes==0.37.0
cchardet==2.1.7
chardet==5.1.0
contourpy==1.0.7
常见包
setuptools
pip
packaging
Pillow
fonttools
matplotlib
networkx
pyparsing
python-dateutil
numpy
six
scipy
kiwisolver
contourpy
numpy-financial
cycler
scikit-fuzzy
openpyxl
xlrd
statistics
statsmodels
pandas
pmdarima
1.5 更新pip
python.exe -m pip install --upgrade pip
二、错误解决办法
警告:
W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
解决:
开头加:
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
三、Pycharm
3.1 添加安装包
python知识点梳理
图形用户界面
Kivy:一个开源的 Python 库,用于开发多点触控应用程序。它支持多种输入设备,适合创建现代的、交互式的用户界面。
PyGTK:这是 GTK+ (GIMP Toolkit) 的 Python 绑定,用于创建符合 GNOME 标准的图形用户界面。
Flexx:使用 Web 技术的 Python GUI 工具包,可以用来创建跨平台的桌面和 Web 应用程序。
Dear PyGui:一个简单易用但功能强大的 Python GUI 框架,它使用即时模式范例和 GPU 来促进极其动态的接口。
PyOpenGL:这是 OpenGL 的 Python 绑定,可以用来创建 3D 图形和游戏。
libavg:一个高级的 UI 框架,用于开发现代的触摸界面,它使用硬件加速来提高性能。
Tkinter:Python 的标准 GUI 库,适合入门级用户。
PyQt 或 PySide:基于 Qt 框架,功能强大,适合复杂的应用程序开发。
wxPython:另一个强大的跨平台 GUI 库,提供本地应用程序的外观和感觉。
PySimpleGUI:简化了 GUI 的创建过程,适合初学者快速上手。
AI
股票
可以读取指数
import requests
import random
import time
import tkinter as tk
from datetime import datetime
from tkinter import ttk, messagebox
import threading
# 视觉配置
COLOR_BG = "#0a0a1f" # 深空背景
COLOR_TEXT = "#00ff9d" # 荧光数据色
COLOR_CARD = "#1a1a3f" # 信息面板
FONT_STYLE = "Consolas"
USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...",
]
class QuantumFinanceTerminal:
def __init__(self, root):
self.root = root
self.setup_ui()
self.running = True
threading.Thread(target=self.data_loop, daemon=True).start()
def setup_ui(self):
"""构建界面"""
self.root.title("量子金融终端")
self.root.geometry("800x600")
self.root.configure(bg=COLOR_BG)
# 标题栏
title_frame = ttk.Frame(self.root, style="Title.TFrame")
title_frame.pack(fill="x", pady=5)
ttk.Label(title_frame, text="量子金融终端", font=("Microsoft YaHei", 14),
foreground="white", background="black").pack(pady=5)
# 核心数据面板
self.main_frame = ttk.Frame(self.root, style="Main.TFrame")
self.main_frame.pack(pady=20, padx=30, fill="both", expand=True)
# 数据展示组件
self.setup_data_display()
# 底部状态条
self.setup_status_bars()
def setup_data_display(self):
"""核心数据展示区"""
# 最新价
self.lbl_price = ttk.Label(self.main_frame, text="--",
font=(FONT_STYLE, 48), foreground=COLOR_TEXT,
background=COLOR_CARD)
self.lbl_price.pack(pady=15)
# 涨跌幅
self.lbl_change = ttk.Label(self.main_frame, text="--%",
font=(FONT_STYLE, 24), foreground=COLOR_TEXT,
background=COLOR_CARD)
self.lbl_change.pack()
def setup_status_bars(self):
"""底部状态指示条"""
status_frame = ttk.Frame(self.root)
status_frame.pack(side="bottom", fill="x", pady=10)
# 上涨条
self.up_bar = self.create_status_item(status_frame, "上涨", 0, "#45ff6b")
# 下跌条
self.down_bar = self.create_status_item(status_frame, "下跌", 1, "#ff5050")
# 成交量条
self.vol_bar = self.create_status_item(status_frame, "成交量", 2, "#808080")
def create_status_item(self, parent, title, column, color):
"""创建单个状态组件"""
frame = ttk.Frame(parent)
frame.grid(row=0, column=column, padx=15)
ttk.Label(frame, text=title, foreground="white",
background=COLOR_BG).pack()
return ttk.Label(frame, text="▮", font=("Consolas", 18),
foreground=color, background=COLOR_BG)
def data_loop(self):
"""数据更新线程"""
while self.running:
try:
data = self.get_market_data()
if data:
self.root.after(0, self.update_display, data)
time.sleep(30)
except Exception as e:
messagebox.showerror("系统错误", f"数据异常: {str(e)}")
def get_market_data(self):
"""获取上证指数数据(腾讯接口)"""
try:
headers = {'User-Agent': random.choice(USER_AGENTS)}
response = requests.get(
"http://qt.gtimg.cn/q=sh000001",
headers=headers,
timeout=8
)
response.encoding = 'GBK' # 关键编码处理
return self.parse_data(response.text.split('~'))
except Exception as e:
print(f"[System] 数据获取失败: {str(e)}")
return None
def parse_data(self, raw):
"""精准数据解析[[1][8]]"""
try:
# 数据样例:v_sh000001="1~上证指数~3278.52~-12.75~-0.39~108925612~16895234567..."
if len(raw) < 40:
raise ValueError("数据字段缺失")
return {
"price": float(raw[3]), # 当前指数
"change": float(raw[4]), # 涨跌额
"change_pct": float(raw[5].strip('%')), # 去除%转换
"volume": int(raw[6] )//10000 # 成交量(万手)
}
except (IndexError, ValueError) as e:
print(f"[System] 解析错误: {str(e)}")
return None
def update_display(self, data):
"""界面更新"""
# 核心指标
self.lbl_price.config(text=f"{data['price']:.2f}")
# 涨跌指示
change_color = "#45ff6b" if data['change_pct'] >=0 else "#ff5050"
symbol = "↑" if data['change_pct'] >=0 else "↓"
self.lbl_change.config(
text=f"{symbol} {abs(data['change_pct']):.2f}%",
foreground=change_color
)
# 状态条更新(比例缩放)
self.up_bar.config(text="▮" * int(data['change_pct' ] *2))
self.down_bar.config(text="▮" * int(abs(data['change_pct'] ) *2))
self.vol_bar.config(text="▮" * int(data['volume' ] /5000))
def on_close(self):
"""安全关闭"""
self.running = False
self.root.destroy()
if __name__ == "__main__":
root = tk.Tk()
style = ttk.Style()
style.configure("Main.TFrame", background=COLOR_CARD,
borderwidth=3, relief="ridge")
style.configure("Title.TFrame", background="black")
app = QuantumFinanceTerminal(root)
root.protocol("WM_DELETE_WINDOW", app.on_close)
root.mainloop()