Python 高级编程总结
2025年1月10日...大约 4 分钟
Python 高级编程总结
基础编程
Python基础教程链接。
提示
Python 对文件中包含的 '-'比较敏感,需要链接两个单词时请使用 '_'。
PyCharm 常用命令汇总
--------------------
永久修改pip为国内镜像
--------------------
1. 使用 windows store 默认安装后的路径:C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\pip.ini
2. 编辑pip.ini文档,新增如下配置项
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
3. 其它非 windows store 安装后需要手动创建路径:C:\Users\<你的用户名>\AppData\Roaming\pip\pip.ini
--------------------
pip 常用命令汇总如下
--------------------
pip config list # 查看pip配置信息
pip list # 查看当前安装的包
pip freeze > requirements.txt # 生成requirements.txt文件
pip install requests # 安装依赖包最常用的命令 requests 替换为其他包名
----------------------
python 常用命令汇总如下
----------------------
python -m pip install --upgrade pip # 升级pip工具到最新版本,安装到系统文件夹中
D:\pythondev\jinpin19-crawler\Scripts\python.exe -m pip install --upgrade pip # 升级pip工具到最新版本,安装到本项目对应的虚拟环境jinpin19-crawler中
python -m ensurepip --upgrade # 重新安装pip模块并修复缺失的模块
打包程序到 Ubuntu 中
--------------------------
windows 中压缩文件成 zip 包
--------------------------
python --version # 在windwos终端操作
pip freeze > requirements.txt # 在windwos终端操作
# 在windows10上用 powershell压缩文件。命令运行在 jinpin19-crawler父目录下。
PS D:\pythondev\jinpin19-crawler> cd ..
PS D:\pythondev> Compress-Archive -Path jinpin19-crawler -DestinationPath jinpin19-crawler.zip
# 在bash终端下输出项目的压缩文件,这个命令等效于 zip -r jinpin19-crawler.zip jinpin19-crawler/。
$ tar -a -c -f jinpin19-crawler.zip jinpin19-crawler/
--------------------------------
在 Ubuntu 中安装 python 及虚拟环境
--------------------------------
# 以下在 Unbuntu 终端操作
# 如果镜像源无法下载可以尝试下这个路径
pip config set global.index-url https://pypi.org/simple
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
sudo apt install python3.11 -y
python3.11 --version # 验证安装
sudo apt install python3-pip -y
pip3 --version # 验证安装
sudo apt install python3-venv -y
python3 -m venv /var/lib/myserver/jinpin19/venv # 创建虚拟环境
# (venv) ubuntu@VM-8-2-ubuntu:/var/lib/myserver/jinpin19$ 激活后的终端如此
source /var/lib/myserver/jinpin19/venv/bin/activate
pip install -r requirements.txt # cd /var/lib/myserver/jinpin19 安装 requirements.txt中的依赖
下面是安装成功的打印记录:
Downloading wsproto-1.2.0-py3-none-any.whl (24 kB)
Building wheels for collected packages: typing
Building wheel for typing (pyproject.toml) ... done
Created wheel for typing: filename=typing-3.7.4.3-py3-none-any.whl size=26395 sha256=4efbc4eb423b648827916e433862dc95bbdb4f4bfc0f566a14aa5274b449ce4f
Stored in directory: /home/ubuntu/.cache/pip/wheels/12/98/52/2bffe242a9a487f00886e43b8ed8dac46456702e11a0d6abef
Successfully built typing
Installing collected packages: sortedcontainers, pytz, websocket-client, urllib3, tzdata, typing_extensions, typing, soupsieve, sniffio, six, schedule, python-dotenv, PySocks, pycparser, packaging, numpy, idna, h11, fake-useragent, charset-normalizer, certifi, attrs, annotated-types, wsproto, requests, python-dateutil, pydantic_core, outcome, cffi, beautifulsoup4, anyio, webdriver-manager, trio, starlette, pydantic, pandas, bs4, trio-websocket, fastapi, selenium
Successfully installed PySocks-1.7.1 annotated-types-0.7.0 anyio-4.9.0 attrs-25.3.0 beautifulsoup4-4.13.3 bs4-0.0.2 certifi-2025.1.31 cffi-1.17.1 charset-normalizer-3.4.1 fake-useragent-2.1.0 fastapi-0.115.12 h11-0.14.0 idna-3.10 numpy-2.2.4 outcome-1.3.0.post0 packaging-24.2 pandas-2.2.3 pycparser-2.22 pydantic-2.10.6 pydantic_core-2.27.2 python-dateutil-2.9.0.post0 python-dotenv-1.0.1 pytz-2025.1 requests-2.32.3 schedule-1.2.2 selenium-4.30.0 six-1.17.0 sniffio-1.3.1 sortedcontainers-2.4.0 soupsieve-2.6 starlette-0.46.1 trio-0.29.0 trio-websocket-0.12.2 typing-3.7.4.3 typing_extensions-4.12.2 tzdata-2025.2 urllib3-2.3.0 webdriver-manager-4.0.2 websocket-client-1.8.0 wsproto-1.2.0
----------------------------------
在 Ubuntu 中解压 zip 文件并启动服务
----------------------------------
# 把在 win 中压缩的文件放在 liunx 中解压
sudo apt install unzip -y # 安装解压缩文件
unzip jinpin19-crawler.zip # ubuntu解压zip
tar -xzvf my_project.tar.gz # ubuntu解压tar.gz
# FastAPI 需要 uvicorn 运行服务器,确保已安装
cd /var/lib/myserver/jinpin19/venv
pip install uvicorn
pip install fastapi
# 如果未激活虚拟环境先执行下面的命令:
source /var/lib/myserver/venv/bin/activate
# main:app 指的是 main.py 里的 app 对象
# cd /var/lib/myserver/jinpin19/ # 切记这个命令是在项目的根目录下运行
uvicorn jinpin19crawler.main:app --host 0.0.0.0 --port 8000 --reload
--------------------------
下面是服务启动成功的打印记录
--------------------------
(venv) ubuntu@VM-8-2-ubuntu:/var/lib/myserver/jinpin19$ uvicorn jinpin19crawler.main:app --host 0.0.0.0 --port 8000 --reload
INFO: Will watch for changes in these directories: ['/var/lib/myserver/jinpin19-crawler']
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Started reloader process [14301] using StatReload
INFO: Started server process [14303]
INFO: Waiting for application startup.
INFO: Application startup complete.
---------------------------------------------------------
nginx 反向代理后访问浏览器:https://www.ai789.site/configs
---------------------------------------------------------
location /configs {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' '"Origin, Content-Type, Accept, Authorization"' always;
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' '"Origin, Content-Type, Accept, Authorization"';
add_header 'Access-Control-Max-Age' 1728000;
return 204;
}
}
-------------------------------
浏览器访问后服务器返回状态代码如下
-------------------------------
INFO: 103.172.81.132:0 - "GET /configs HTTP/1.0" 307 Temporary Redirect
INFO: 103.172.81.132:0 - "GET /configs HTTP/1.0" 307 Temporary Redirect
INFO: 36.112.101.202:0 - "GET /configs/ HTTP/1.0" 200 OK
-----------------------
工程目录层级结构如下所示
-----------------------
/var/lib/myserver/jinpin19
├── jinpin19-crawler/ # 你的爬虫项目
├── venv/ # 虚拟环境
└── jinpin19-crawler.zip # 压缩包
Pycharm中调试FastApi web项目
--------------------------------------
测试服务器代码,其他接口可以放在此文件中
--------------------------------------
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000) # 手动启动 uvicorn