尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

环境搭建:Python项目(开发和生产)

环境搭建:Python项目(开发和生产) 目录前言一、MacOS 和 Linux 下的虚拟环境1.1 创建和运行虚拟环境生产环境1.1.1 root系统环境 和 conda环境1.1.2 混用包管理1.1.3 conda 生成环境1.2 其他命令开发环境1.3 项目传输1.3.1 Linux - MacOS 间传输项目1.3.2 Linux - Linux 间传输项目前言Python程序的生产环境配置和开发环境配置一、MacOS 和 Linux 下的虚拟环境python程序的虚拟环境被破坏 或者 不适配服务器的操作系统1.1 创建和运行虚拟环境生产环境1.1.1 root系统环境 和 conda环境sudo 默认会重置 PATH这个机制叫secure_path出于安全考虑故意丢弃当前的 PATH改用/etc/sudoers里写死的干净路径# canda base 环境下 # 输出/usr/bin/python3: No module named uvicorn —— sudo使得身份切换 root sudo sh restart.sh sh restart.sh # 查看base下 PATH which python3 sudo echo $PATH # 查看sudo下 PATH sudo which python3 sudo env | grep PATH1.1.2 混用包管理## conda create base 下 ##(base) ubuntuSuper-Server:/data/server/hc$ python3 -m venv venv (venv) (base) ubuntuSuper-Server:/data/server/hc$ pip install -r requirements.txt # 1. 进入项目目录 cd /path/to/your/project # 2. 创建虚拟环境推荐命名为 .venv python3 -m venv .venv # 3. 激活虚拟环境 source .venv/bin/activate # 4. 验证是否激活成功终端前缀会出现 (.venv)—— # 预期输出应指向项目内的 .venv 目录 which python # 5. 退出虚拟环境 deactivate ################################################################################### ## 待实验 sudo python3 -m venv 系统自带的 Python 默认不包含 venv 模块 ## 安装包 sudo apt install python3-venv在 (base) 下用 venv 和 pip路径污染依然使用了 Conda base 的 Python 解释器site-packages仓库半隔离状态两个环境依然会出现第三方库版本冲突的情况包管理冲突venv 使用 pip 安装的包conda不知道conda更新或者安装新包时会覆盖pip安装的包1.1.3 conda 生成环境cd /data/server/hc conda create -n hc python3.10 conda activate hc pip install -r requirements.txt conda deactivate ############################################################################ conda env create -f environment.yml # 其他方式1.2 其他命令开发环境确认当前正在使用的python# 1. 查看当前默认的 Python3 版本 python3 --version # 2. 查看当前 python3 命令实际指向的文件路径 which python3 # 3. 终极排查列出系统 $PATH 中所有名为 python3 的可执行文件及优先级 type -a python3 # 4. 询问 Python 解释器自身的绝对路径最准确不受别名干扰 python3 -c import sys; print(sys.executable)包管理 pip 常用命令速查# 安装包 pip install requests # 安装指定版本 pip install requests2.28.0 # 使用国内镜像源解决网络超时 pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple # 查看当前环境已安装的包 pip list # 导出当前环境的依赖清单 pip freeze requirements.txt # 根据清单一键安装依赖 pip install -r requirements.txt # 卸载包 pip uninstall requests多 Python 版本管理 (pyenv)在项目虚拟环境中独立python版本# 使用 Homebrew 安装 brew install pyenv # 将 pyenv 初始化脚本写入 zsh 配置文件 echo eval $(pyenv init -) ~/.zshrc source ~/.zshrc# 查看可安装的 Python 版本列表 pyenv install --list # 安装指定版本例如 3.11.6 pyenv install 3.11.6 # 查看本地已安装的版本 pyenv versions # 设置全局默认版本 pyenv global 3.11.6 # 【核心】为当前项目目录绑定特定版本 —— 执行后会在当前目录生成 .python-version 文件 cd /path/to/project # 单个环境 pyenv local 3.11.6 # 多个环境 pyenv virtualenv 3.11.6 my-project-env pyenv local my-project-env二、不同系统间项目的传输2.1 Linux - MacOS 间传输项目可执行文件不同pip install # 输出command not found: pip ls -la venv/bin/ # 输出python 文件的权限是 -rw-r--r-- file venv/bin/python3 # 输出ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux rm -rf venv python3 -m venv venv file venv/bin/python # 输出Mach-O 64-bit executable arm64 pip install -r requirement.txt2.2 Linux - Linux 间传输项目注意1文件环境被破坏下载过程中缺失activate 权限 缺少执行权限x下载过程中被破坏FTP工具传输默认的 ASCll 文本模式在传输中会自行检查文件并根据不同操作系统的换行表示方式进行修改。所以Linux服务器之前传输文件最好选择 Binary 模式。
返回列表