0、Python环境安装

pyenv安装方式

1、安装git

yum install git -y

2、安装python编译依赖

yum -y install gcc make patch gdbm-devel  openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel

3、下载的是一个叫pyenv-installer的shell脚本

Pyenv官网 https://github.com/pyenv/pyenv

Pyenv-installer插件 https://github.com/pyenv/pyenv-installer

curl -x 192.168.1.6:7890 -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

4、如果curl出现 curl:(35) SSL connect error 是nss版本过低,需要更新

# yum仓库
[updates]
name=CentOS-Updates
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0

yum update nss

5、~/.bash_profile中追加

$ vim ~/.bash_profile
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

source ~/.bash_profile 

这样当用户启动的时候,会执行用户的.bash_profile中的脚本,就会启动pyenv

安装好的pyenv就在~/.pyenv目录中

pyenv命令

python版本及path路径

python -V
echo $PATH

pyenv命令

pyenv help install

列出所有可用版本

pyenv install --list

在线安装指定版本

pyenv install 3.8.6
pyenv versions

使用缓存方式安装

在~/.pyenv目录下,新建cache目录,放入下载好的待安装版本文件

$ mkdir ~/.pyenv/cache
$ cd ~/.pyenv/cache
$ wget -e "https_proxy=http://192.168.1.6:7890" https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tar.xz
$ pyenv install 3.8.6

pyenv的python版本控制

version显示当前的python版本

versions显示所有可用的版本和当前版本

global全局设置

pyenv global 3.8.6
pyenv versions

可以看到所有受pyenv控制的窗口中都是3.5.3的版本了

这里用global是作用于非root用户python用户上,如果是root用户安装,不要使用global,否则影响太大,比如这里使用的centos6.5就是python2.6,使用了global就成了3.x,会带来很不好的影响

shell会话设置

影响只作用于当前会话

pyenv shell 3.8.6
pyenv versions

local 本地设置

使用pyenv local设置从当前工作目录开始向下递归都继承这个设置

pyenv local 3.8.6
pyenv versions

为什么要使用虚拟环境?

因为Python环境都是一个公共空间,如果多个项目使用不同Python版本开发,或者使用不同的Python版本部署运行,或者使用同样的版本开发的不同项目使用了不同版本的库等等这些问题会带来冲突的发生,最好的解决办法就是每一个项目独立运行在自己的"独立小环境"中。使用插件,在plugins/pyenv-virtualenv中

$ pyenv virtualenv 3.8.6 wuyanzu
$ mkdir /pyproject/xiecheng -p
$ cd /pyproject/xiecheng
$ pyenv local wuyanzu  # wuyanzu是一个容器名,是上面用virtualenv创建的
# 导出包
$ pip freeze > requirement

取消local设置

pyenv local --unset

python的编译安装

由于centos自带的是2.6所以需要重新安装

$ python --version
Python 2.6.6

安装依赖

yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install tk tk-devel
yum install gcc
$ wget -e "https_proxy=http://192.168.1.6:7890" https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tgz
$ tar zxf Python-3.8.6.tgz -C /tmp
$ cd /tmp/Python-3.8.6
$ ./configure --prefix=/usr/local --enable-optimizations
# 根据你的真实CPU核数
$ make -j 6 
$ make install 
$ ln -s /usr/local/bin/python3.8 /usr/bin/python3
$ ln -s /usr/local/bin/pip3.8 /usr/bin/pip3

pip通用配置

$ mkdir ~/.pip
$ vim ~/.pip/pip.conf
[global]
trusted-host=pypi.doubanio.com              
index-url=https://pypi.doubanio.com/simple/ 

Pycharm与Linux的环境同步(SFTP)

一、前提条件

1、确保linux服务器已经安装好虚拟环境,并且虚拟环境已经python的相关环境(连接服务器也可以进行环境配置)。

二、连接服务器

1、进入pycharm的Tools栏

0、Python环境安装

2、选择文件传输协议为SFTP,输入服务器的IP、端口、密码进行连接,不出意外的情况下应该是能够连接成功的。

0、Python环境安装

3、选择本地和服务器的文件路径

0、Python环境安装

三、采用服务器的解释器

1、file-setings-Priject interpretor-SSH输入服务的IP和用户名

0、Python环境安装

0、Python环境安装

requirements.txt

文件用于声明 Python 依赖,以后要用的包

$ pip3 freeze > requirements.txt # 生成requirements.txt
$ pip install -r requirements.txt # 从requirements.txt安装依赖

直接编辑

prettytable
requests
aiohttp
aiofiles
scipy
pillow
numpy

setup.py 与 requirements.txt 区别

setup.py 这个文件是用来管理模块的,你可以将你的项目打包为模块上传到 pypi 中,也同样能将项目作为模块放入python 的系统加载模块目录下。

requiremens.txt 这个文件是列举你这个项目引用了哪些非本项目的依赖的,除此之外,没有其他作用。

因此,可以看出这两个项目其实并没有冲突关系,而且有很大共存的必要。

假如你的项目需要保存为系统模块,或者可安装为系统命令的 setup.py 就必不可少了
假如你的项目是可以直接运行的,那么 requirements.txt 也是必不可少。
如果你两种功能都需要,那么就两个文件都不能少。
有这两种功能都需要的么?

必须有啊,而且还很多,例如 Flask,他就支持两种方式:

以系统命令的方式启动,在 Flask 0.11.1 中新加入了一个 Click 包,他可以让你 setup 之后以命令的方式运行
直接运行,传统的 Flask 启动方式一般就是 app.run() 或者 python manage.py runserver

IDE辅助工具下载

  • ansible
  • Kite
  • docker
  • kubernetes
  • Material Theme UI
上一篇:管理 Python 多版本,pyenv 用起来


下一篇:高性能 FastAPI 框架入门精讲-3多应用拆分注册蓝图