Python Env
wangzf / 2022-07-13
Python 环境使用需求
检查 Python 环境
- 检查项
- Python
- pip
- 检查方法
$ python --version
$ python3 --version
$ pip3 --version
检查 Python 安装的位置
- 检查项
- Python
- pip
- 检查方法
$ which python
$ which python3
$ which pip
$ which pip3
安装和卸载 Python3 环境
macOS
Python.org 安装
- TODO
Brew 安装
- 安装 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
- 安装 Python 3:
$ brew install python
- 安装 pip3
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py
Anaconda
- TODO
Minconda
安装
Installing on macOS
- Download the installer:
- Verify installer hashes:
$ shasum -a 256 filename
- Install
$ bash Miniconda3-lastest-MacOSX-x86_64.sh
-
Follow the prompts on the installer screens
- If you are unsure about any setting, accept the defaults. You can change them later
-
To make the changes take effect, close and then re-open your terminal window
-
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
- Open a terminal window
- Navigate to the
miniconda
directory - Run
conda update conda
卸载
Uninstall Miniconda on macOS
- Open a terminal window
- Remove the entire Miniconda install directory with
$ rm -rf ~/miniconda
-
OPTIONAL: Edit
~/.bash_profile
to remove the Miniconda directory from your PATH environment variable -
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 安装
- 参考 pyenv 的使用
Ubuntu
Linux Version
- Ubuntu 16.04 LTS
- Ubuntu 18.04 LTS
- Ubuntu 20.04 LTS
安装 Python 3.7
- 配置Ubuntu环境:
# 更新系统软件源
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
- Python 3.7 及包管理工具:
# 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
- 若更换python版本后出现
No module named "apt_pkg"
:
$ 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 安装
- 环境
- 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)
- 安装 Chocolatey
- 安装 Python 3
C:/> choco install python
创建 Python 虚拟环境
virtualenv
- Ubuntu/macOS
$ 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
- Windows
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
- 安装多个版本的 Python
- 在 user 下安装 Python
- 在 user 下安装多个版本的 Python
- 安装 Python 的最新开发版本
- 在已安装的版本之间切换
- 使用虚拟环境 pyenv
- 自动激活不同的 Python 版本和虚拟环境
这里只介绍 Linux 和 macOS 的使用, 对于 Windows 用户参考 https://github.com/pyenv-win/pyenv-win。 还有一篇详细介绍的文章:好家伙,妥妥的 Python Master
安装 pyenv
-
构建依赖
在安装 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 /
-
安装 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
-
查看使用 pyenv 可以安装的 Python 版本
- 查看所有可用的 Cython 3.6~3.8
$ pyenv install --list | grep " 3\.[6,7.8]"
- 查看所有可用的 Jython 版本
$ pyenv install --list | grep "jython" $ pyenv install --list
-
确定要安装的 Python 版本后, 安装 Python
$ pyenv install -v 3.7.10
- 查看 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
- 删除某个 Python 版本
$ rm -rf ~/.pyenv/version/3.7.10
# or 卸载
$ pyenv uninstall 3.7.10
切换 Python 版本
- pyenv 如何准确地解析使用的 Python 版本
# 查看当前已经下载的、使用的 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 的区别
- pyenv 管理 Python 的多个版本
- virtualenv/venv 管理特定版本 Python 的虚拟环境
- pyenv-virtualenv 管理不同版本 Python 的虚拟环境
- 创建虚拟环境
$ pyenv virtualenv <python_version> <envirionment_name>
- 激活虚拟环境
$ pyenv local <envirionment_name
$ pyenv which python
$ pyenv which pip
# or
$ pyenv activate <envirionment_name>
$ pyenv deactivate
使用多个 Python 环境
假设在机器中安装了如下 Python 版本:
- 2.7.15
- 3.6.8
- 3.8-dev
现在想要处理两个项目:
- project1 支持 python2.7 和 Python3.6
- project2 支持 python3.6 和 Python3.8-dev 的测试
- 首先为 project1 创建一个虚拟环境
$ cd project1/
$ pyenv which python
$ pyenv virtualenv 3.6.8 project1
$ pyenv local project1
$ python -V
- 为 project2 创建一个虚拟环境
$ cd project2/
$ pyenv which python
$ pyenv virtualenv 3.8-dev project2
$ pyenv local project2
$ python -V
- 同时激活多个版本
假设 project2 使用 3.8 中的实验性功能, 但仍然想让代码适用于 Pyton3.6
$ pyenv local project2 3.6.8
$ python3.6 -V
探索 pyenv 命令
- 查看 pyenv 所有可用的命令完整列表
$ pyenv commands
$ pyenv <pyenv_commands> --help
- install
# 安装 python 特定版本
$ pyenv install 3.6.8
# 列出所有可供安装的 Python 版本
$ pyenv install -l/--list
# 构建调试版本的 Python
$ pyenv install -g/--debug
# 详细模式: 将编译状态打印到标准输出
$ pyenv install -v/--verbose
- versions
# 显示所有当前安装的 Python 版本,包括虚拟环境
$ pyenv versions
- which
# 确定系统可执行文件的完整路径
$ pyenv which python
$ pyenv which pip
- global
$ pyenv global 3.7.10
- local
# 设置特定与应用程序的 Python 版本
# 此命令会在当前目录中创建一个 .python-version 文件, 进入该目录会自动激活该文件中的 Python 版本
$ pyenv local 3.6
- shell
# 设置特定于 shell 的 Python 版本
$ pyenv shell 3.8-dev
Python 项目管理
requirements.txt
- Method 1:
# 生成 requirements.txt
pip freeze --local > requirements.txt
# 安装 requirements.txt
pip install -r requirements.txt
- Method 2:
pip install pipreqs
pipreqs ./ encoding=utf-8