环境搭建: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 PATH

1.1.2 混用包管理

## conda create base 下
##(base) ubuntu@Super-Server:/data/server/hc$ python3 -m venv venv
(venv) (base) ubuntu@Super-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 python=3.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 requests==2.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.txt

2.2 Linux -> Linux 间传输项目

注意1:文件环境被破坏

  • 下载过程中缺失:activate 权限 缺少执行权限x,
  • 下载过程中被破坏:
    FTP工具传输,默认的 ASCll 文本模式在传输中,会自行检查文件并根据不同操作系统的换行表示方式进行修改。
    所以,Linux服务器之前传输文件,最好选择 Binary 模式。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值