logo

Python Env

王哲峰 / 2022-07-13


目录

Python 环境使用需求

检查 Python 环境

$ python --version
$ python3 --version
$ pip3 --version

检查 Python 安装的位置

$ which python
$ which python3

$ which pip
$ which pip3

安装和卸载 Python3 环境

macOS

Python.org 安装

Brew 安装

# $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ vim ~/.zshrc
$ export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
$ vim ~/.profile
$ export PATH="/usr/local/opt/python/libexec/bin:$PATH"
$ brew update
$ brew install python
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py

Anaconda

Minconda

安装

Installing on macOS

  1. Download the installer:
  2. Verify installer hashes:
$ shasum -a 256 filename
  1. Install
$ bash Miniconda3-lastest-MacOSX-x86_64.sh         
  1. Follow the prompts on the installer screens

    • If you are unsure about any setting, accept the defaults. You can change them later
  2. To make the changes take effect, close and then re-open your terminal window

  3. Test your installation

    • In your terminal window or Anaconda Prompt, run the command
    conda list
    
    • A list of installed packages appears if it has been installed correctly

更新

Updating Miniconda on macOS

  1. Open a terminal window
  2. Navigate to the miniconda directory
  3. Run conda update conda

卸载

Uninstall Miniconda on macOS

  1. Open a terminal window
  2. Remove the entire Miniconda install directory with
$ rm -rf ~/miniconda
  1. OPTIONAL: Edit ~/.bash_profile to remove the Miniconda directory from your PATH environment variable

  2. Remove the following hidden file and folders that may have been created in the home directory:

    • .condarc file
    • .conda directory
    • .continuum directory
    • By running:
    $ rm -rf ~/.condarc ~/.conda ~/.continuum
    

pyenv 安装

Ubuntu

Linux Version

安装 Python 3.7

# 更新系统软件源
sudo apt-get update

# software-properties-common
$ sudo apt-get install software-properties-common

# This PPA contains more recent Python versions packaged for Ubuntu
# https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa
$ sudo add-apt-repository ppa:deadsnakes/ppa

# 更新软件源
$ sudo apt-get update
# python3.7
$ sudo apt-get install python3.7

# pip3
$ sudo apt-get install python3-pip
$ sudo apt-get install python3.7-dev
$ sudo apt-get install python-dev
$ sudo apt-get install python3.7-gdbm

# 安装验证
$ python3.7 --version
pip3 install virtualenv
pip3 install virtualenvwrapper

sudo install virtualenv
sudo install virtualenvwrapper

修改 python3 的默认指向

# 删除软连接
$ sudo rm /usr/bin/python3
$ sudo rm /usr/bin/python

# 创建软连接
$ sudo ln -s python3.7 /usr/bin/python3
$ sudo ln -s python3.7 /usr/bin/python

# 修改验证
$ which python3     # 软连接路径
$ python3 --version

$ which pip3        # 软连接路径
$ pip3 --version
$ sudo apt-get remove --purge python-apt
$ sudo apt-get install python-apt -f
$ sudo find / -name "apt_pkg.cpython-36m-x86_64-linux-gnu.so"
$ cd /usr/lib/python3/dist-packages/
$ sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.cpython-37m-x86_64-linux-gnu.so

卸载 Python 3.7

# 卸载 Python 3.7
$ sudo apt-get remove python3.7

# 卸载 Python 3.7 及其依赖
$ sudo apt-get remove --auto-remove python3.7

# 清除 Python 3.7
$ sudo apt-get purge python3.7
$ sudo apt-get purge [--auto-remove] python3.7

Windows

官网下载安装

注意:升级系统 pip 可能会导致问题。如果不是在虚拟环境中,请针对下面的命令使用 python3 -m pip。 这样可以确保您升级并使用 Python pip,而不是系统 pip

Chocolatey 安装

  1. 环境
    • Windows 7+ / Windows Server 2003+
    • PowerShell v2+ (minimum is v3 for install from this website due to TLS 1.2 requirement)
    • .NET Framework 4+ (the installation will attempt to install .NET 4.0 if you do not have it installed)(minimum is 4.5 for install from this website due to TLS 1.2 requirement)
  2. 安装 Chocolatey
  3. 安装 Python 3
C:/> choco install python

创建 Python 虚拟环境

virtualenv

$ pip install virtualenv
$ mkdir myproject
$ cd myproject
$ virtualenv -system-site-packages -p python3 ./venv
# $ virtualenv -no-site-packages -p python3 ./venv
$ source ./venv/bin/activate
$ (venv) $ pip install --upgrade pip
$ (venv) $ pip list
$ (venv) $ deactivate
C:\> virtualenv --system-site-packages -p python3 ./venv

(venv) C:\> .\venv\Scripts\activate
(venv) C:\> pip install --upgrade pip
(venv) C:\> pip list
(venv) C:\> deactivate

conda

$ conda create -n venv pip python3.7
$ source activate venv
(venv) $ pip install --ignore-installed --upgrade packageURL
(venv) $ source deactivate

pyenv

  1. 安装多个版本的 Python
    • 在 user 下安装 Python
    • 在 user 下安装多个版本的 Python
  2. 安装 Python 的最新开发版本
  3. 在已安装的版本之间切换
  4. 使用虚拟环境 pyenv
  5. 自动激活不同的 Python 版本和虚拟环境

这里只介绍 Linux 和 macOS 的使用, 对于 Windows 用户参考 https://github.com/pyenv-win/pyenv-win。 还有一篇详细介绍的文章:好家伙,妥妥的 Python Master

安装 pyenv

  1. 构建依赖

    在安装 pyenv 之前, 需要安装一些操作系统特定的依赖项, 这些依赖项主要是用 C 编写的开发应用程序, 并且是必需的, 因为 pyenv 是通过从源码构建来安装 Python 的

    • Ubuntu/Debian
    $ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
    libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
    libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl
    
    • Fedora/CentOS/RHEL
    $ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite \
    sqlite-devel openssl-devel xz xz-devel libffi-devel
    
    • Alpine
    $ apk add libffi-dev ncurses-dev openssl-dev readline-dev \
     tk-dev xz-dev zlib-dev
    
    • openSUSE
    $ zypper in zlib-devel bzip2 libbz2-devel libffi-devel \
    libopenssl-devel readline-devel sqlite3 sqlite3-devel xz xz-devel
    
    • macOS
    $ brew install openssl readline sqlite3 xz zlib
    $ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
    
  2. 安装 pyenv(使用 pyenv-installer 项目), 安装内容:

    • pyenv: pyenv 应用
    • pyenv-virtualenv: pyenv 和虚拟环境的插件
    • pyenv-update: pyenv 的更新插件
    • pyenv-doctor: pyenv 及其构建依赖的验证插件
    • pyenv-which-ext: 自动查找系统命令的插件
$ curl https://pyenv.run | bash

WARNING: seems you still have not added 'pyenv' to the load path.

Load pyenv automatically by adding
the following to ~/.bashrc or /.zshrc:

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

安装和卸载 Python

  1. 查看使用 pyenv 可以安装的 Python 版本

    • 查看所有可用的 Cython 3.6~3.8
    $ pyenv install --list | grep " 3\.[6,7.8]"
    
    • 查看所有可用的 Jython 版本
    $ pyenv install --list | grep "jython"
    $ pyenv install --list
    
  2. 确定要安装的 Python 版本后, 安装 Python

$ pyenv install -v 3.7.10
  1. 查看 Python 安装位置

pyenv 安装的每个 Python 版本都位于 pyenv 的根目录中

$ ls ~/.pyenv/version/
3.7.10

$ which python
/Users/zfwang/.pyenv/shims/python

$ which python3
/Users/zfwang/.pyenv/shims/python3

$ pyenv which python
/Users/zfwang/.pyenv/versions/3.7.10/bin/python

$ pyenv which python3
/Users/zfwang/.pyenv/versions/3.7.10/bin/python3
  1. 删除某个 Python 版本
$ rm -rf ~/.pyenv/version/3.7.10
# or 卸载
$ pyenv uninstall 3.7.10

切换 Python 版本

img

# 查看当前已经下载的、使用的 Python 版本
$ pyenv versions

# 设置全局 Python 版本
$ pyenv global 2.7.15
$ pyenv versions
$ cat ~/.pyenv/version

# 创建一个 .python-version 文件
$ pyenv local 3.7.10
$ pyenv versions
$ ls -a
$ cat .python-version

# 设置 shell 的 Python 版本
$ pyenv shell 3.8-dev
$ pyenv version
$ echo $PYENV_VERSION

构建 Python 虚拟环境

pyenv 、pyenv-virtualenv 与 virtualenv、venv 的区别

  1. 创建虚拟环境
$ pyenv virtualenv <python_version> <envirionment_name>
  1. 激活虚拟环境
$ pyenv local <envirionment_name
$ pyenv which python
$ pyenv which pip
# or
$ pyenv activate <envirionment_name>
$ pyenv deactivate

使用多个 Python 环境

假设在机器中安装了如下 Python 版本:

现在想要处理两个项目:

  1. 首先为 project1 创建一个虚拟环境
$ cd project1/
$ pyenv which python
$ pyenv virtualenv 3.6.8 project1
$ pyenv local project1
$ python -V
  1. 为 project2 创建一个虚拟环境
$ cd project2/
$ pyenv which python
$ pyenv virtualenv 3.8-dev project2
$ pyenv local project2
$ python -V
  1. 同时激活多个版本

假设 project2 使用 3.8 中的实验性功能, 但仍然想让代码适用于 Pyton3.6

$ pyenv local project2 3.6.8
$ python3.6 -V

探索 pyenv 命令

$ pyenv commands
$ pyenv <pyenv_commands> --help
# 安装 python 特定版本
$ pyenv install 3.6.8
# 列出所有可供安装的 Python 版本
$ pyenv install -l/--list
# 构建调试版本的 Python
$ pyenv install -g/--debug
# 详细模式: 将编译状态打印到标准输出
$ pyenv install -v/--verbose
# 显示所有当前安装的 Python 版本,包括虚拟环境
$ pyenv versions
# 确定系统可执行文件的完整路径
$ pyenv which python
$ pyenv which pip
$ pyenv global 3.7.10
# 设置特定与应用程序的 Python 版本
# 此命令会在当前目录中创建一个 .python-version 文件, 进入该目录会自动激活该文件中的 Python 版本
$ pyenv local 3.6
# 设置特定于 shell 的 Python 版本
$ pyenv shell 3.8-dev

Python 项目管理

requirements.txt

# 生成 requirements.txt
pip freeze --local > requirements.txt

# 安装 requirements.txt
pip install -r requirements.txt
pip install pipreqs
pipreqs ./ encoding=utf-8