编译安装 Python (venv/virtualenv/virtualenvwrapper/conda)

1. 编译安装 Python (venv/virtualenv/virtualenvwrapper/conda)

在 CentOS 上因为自带的 Python 版本比较旧, 所以要安装高版本的 Python 但同时要求不能影响原来的 python3 命令。

非常不建议直接覆盖当前系统的 pythonpython3 命令, Python 每个版本之间多少有点不兼容问题, 处理起来非常麻烦, 万一系统用到了, 就是个大问题。

Building Python: make install can overwrite or masquerade the python3 binary. make altinstall is therefore recommended instead of make install since it only installs exec_prefix/bin/pythonversion.

If you want it to install to, for example, /usr/bin instead of the default (/usr/local/bin in ubuntu/debian), then instead of ./configure, type ./configure --prefix=/usr when told to use it in the guide.

For in your $HOME/bin directory, use --prefix=$HOME.

If it doesn’t exist, add $HOME/bin to your $PATH like this:

$ export PATH=$HOME/bin:$PATH

This may already be in your .bashrc in ubuntu, and others. If it is, when you next log in, $HOME/bin will be added to your $PATH automatically.

1.1. altinstall bininstall maninstall

Let’s take a look at the generated Makefile!

First, the install target:

install:         altinstall bininstall maninstall

It does everything altinstall does, along with bininstall and maninstall

Here’s bininstall; it just creates the python and other symbolic links.

# Install the interpreter by creating a symlink chain:
#  $(PYTHON) -> python2 -> python$(VERSION))
# Also create equivalent chains for other installed files
bininstall:     altbininstall
        -if test -f $(DESTDIR)$(BINDIR)/$(PYTHON) -o -h $(DESTDIR)$(BINDIR)/$(PYTHON); \
        then rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \
        else true; \
        fi
        (cd $(DESTDIR)$(BINDIR); $(LN) -s python2$(EXE) $(PYTHON))
        -rm -f $(DESTDIR)$(BINDIR)/python2$(EXE)
        (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python2$(EXE))
        ... (More links created)

And here’s maninstall, it just creates “unversioned” links to the Python manual pages.

# Install the unversioned manual pages
maninstall:     altmaninstall
        -rm -f $(DESTDIR)$(MANDIR)/man1/python2.1
        (cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python2.1)
        -rm -f $(DESTDIR)$(MANDIR)/man1/python.1
        (cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python2.1 python.1)

TLDR: altinstall skips creating the python link and the manual pages links, install will hide the system binaries and manual pages.

1.2. 兼容性修正

1.2.1. Redhat/CentOS 系

一般在 /usr/bin/ 下放一个链接, 链接到 /usr/local/bin/ 下面:

$ ln -s /usr/local/bin/pip    /usr/bin/pip
$ ln -s /usr/local/bin/pip3   /usr/bin/pip3
$ ln -s /usr/local/bin/pip3.9 /usr/local/bin/pip3

1.2.2. Debian/Ubuntu 系

1.3. 快速虚拟化环境工具

1.4. Step 1: Install Python Dependencies

Login to your CentOS 8 / CentOS 7 system as root or user with sudo privileges.

Then do system update

sudo yum -y install epel-release
sudo yum -y update

Reboot after the upgrade before you continue to install dependencies

sudo reboot

Install required software development tools required to build Python 3.9 on CentOS 8 / CentOS 7:

sudo yum groupinstall "Development Tools" -y
sudo yum install openssl-devel libffi-devel bzip2-devel -y

Confirm gcc is available:

$ gcc --version
gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

1.5. Step 2: Download latest Python 3.9 Archive

Ensure wget is installed:

sudo yum install wget -y

Use wget to download the latest Python 3.9 release.

wget https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz

Extract the archive file using tar:

tar xvf Python-3.9.10.tgz

Switch to the directory created from the file extraction:

cd Python-3.9*/

1.6. Step 3: Install Python 3.9 on CentOS 8 / CentOS 7

Run the command below to configure Python installation.

./configure --enable-optimizations

Build Python 3.9 on CentOS 8 / CentOS 7:

sudo make altinstall # altinstall is important, DO NOT use `make install`.

Python 安装时 make installmake altinstall 的区别: altinstall skips creating the python link and the manual pages links. altinstall 跳过创建 Python 链接和手册页链接的操作。如果使用 make install, 在系统中将会有两个不同版本的 Python 在 /usr/bin 目录中, 这将会导致很多问题。

Be patient as this takes quite some time depending on number of CPU cores in your system.

Check Python 3.9 installation on CentOS 8 / CentOS 7. Run below command to confirm successful installation of Python 3.9 on CentOS 8 / CentOS 7:

$ python3.9 --version
Python 3.9.10

Pip3.9 must have been installed as well:

$ pip3.9 --version
pip 21.2.4 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

Upgrade pip

$ /usr/local/bin/python3.9 -m pip install --upgrade pip
$ pip3.9 --version

2. 什么是 virtualenv?

virtualenv 可以创建独立 Python 开发环境, 比如当前的全局开发环境是 python3.6, 现在我们有一个项目需要使用 django1.3, 另一个项目需要使用 django1.9, 这个时候就可以使用 virtualenv 创建各自的 python 开发环境了。

2.1. virtualenv 的优点

  • 使不同的应用开发环境独立
  • 环境升级不影响其他的应用, 也不会影响全局的 python 开发环境
  • 它可以防止系统中出现包管理混乱和版本的冲突

2.2. 安装和新建虚拟环境

cmd 下输入: 前提是你的 python 安装路径已经被添加到环境变量中

C:\>pip install virtualenv

2.3. 新建虚拟环境:

C:\>virtualenv testenv
Using base prefix 'c:\\python36'
New python executable in C:\testenv\Scripts\python.exe // 默认安装在当前目录下
Installing setuptools, pip, wheel...done.

可以在当前目录下看一下:

2.4. 激活和关闭当前的虚拟环境

C:\testenv\Scripts>activate   // 激活
 
(testenv) C:\testenv\Scripts>  // 注意终端发生了变化
(testenv) C:\testenv\Scripts>deactivate   // 关闭当前虚拟环境
C:\testenv\Scripts>

2.5. 列出当前的虚拟环境都安装了哪些包

(testenv) c:\testenv\Scripts>pip3 list
pip (9.0.1)
setuptools (37.0.0)
wheel (0.30.0)

现在你就可以在你创建的虚拟环境下安装需要使用到的包了

3. virtualenvwrapper

鉴于 virtualenv 不便于对虚拟环境集中管理, 所以推荐直接使用 virtualenvwrapper。 virtualenvwrapper 提供了一系列命令使得和虚拟环境工作变得便利。它把你所有的虚拟环境都放在一个地方。

3.1. 安装 virtualenvwrapper(确保 virtualenv 已安装)

pip install virtualenvwrapper
pip install virtualenvwrapper-win  #Windows 使用该命令

安装完成后, 在 ~/.bashrc 写入以下内容

export WORKON_HOME=~/Envs
source /usr/local/bin/virtualenvwrapper.sh  
  • 第一行: virtualenvwrapper 存放虚拟环境目录
  • 第二行: virtrualenvwrapper 会安装到 python 的 bin 目录下, 所以该路径是 python 安装目录下 bin/virtualenvwrapper.sh
source ~/.bashrc # 读入配置文件, 立即生效

3.2. virtualenvwrapper 基本使用

  1. 创建虚拟环境 mkvirtualenv
mkvirtualenv venv   

这样会在 WORKON_HOME 变量指定的目录下新建名为 venv 的虚拟环境。

若想指定 python 版本, 可通过 --python 指定 python 解释器

mkvirtualenv --python=/usr/local/python3.5.3/bin/python venv
  1. 基本命令
  • 查看当前的虚拟环境目录
[root@localhost ~]# workon
py2
py3
  • 切换到虚拟环境
[root@localhost ~]# workon py3
(py3) [root@localhost ~]# 
  • 退出虚拟环境
(py3) [root@localhost ~]# deactivate
[root@localhost ~]# 
  • 删除虚拟环境
rmvirtualenv venv

4. python 虚拟环境管理工具 venv 教程

4.1. 概述

Python 有各种各样的系统包和第三方开发的包, 让我们的开发变得异常容易。不过也引入了一个问题, 不同代码需要的包版本可能是不一样的, 所以常常回出现这种情况, 为了代码 B 修改了依赖包的版本, 代码 B 能 work 了, 之前使用的代码 A 就没法正常工作了。因此常常需要对不同的代码设置不同的 Python 虚拟环境。venv 是 Python 自带的虚拟环境管理工具, 使用很方便, 这里简单记录一下使用方法。

需要注意的是, venv 工具没法创建不同版本的 python 环境, 也就是如果你用 python3.5 没法创建 python3.6 的虚拟环境。如果想要使用不同 python 版本的虚拟环境, 请安装 virtual env 包。

如果遇到使用问题, 还请参考 venv 官方文档。

4.2. 安装 venv

python3.6 及以上已经默认安装, python3.5 需要通过系统的包管理工具安装, 例如在 Ubuntu 上, 可以这么安装:

sudo apt install python3-venv

4.3. 创建虚拟环境

假设我们要在当前目录的 test_env 目录下创建虚拟环境, 那么执行下面的命令就可以了:

python3 -m venv test_env

4.4. 启用虚拟环境

在 Linux 和 Mac 环境下, 打开终端, 执行下面的命令:

source ./test_env/bin/activate

在 Windows 环境下, 打开 PowerShell, 执行下面的命令:

.\test_env\Scripts\Activate.ps1

可以看到, 命令行的提示符前面会出现括号, 里面是虚拟环境名称。

4.5. 安装包

虚拟环境启用后, 就可以使用 pip 命令来安装需要的包:

pip install easydict

注意这里不需要 root 权限, 因此无需添加 sudo

在 Linux 和 Mac 系统上, 安装的包放在。/test_env/lib/pythonx.x/site-packages 目录下, 在 Windows 系统上, 是在。/test_env/Lib/site-packages 目录下。

4.6. 使用包

安装后, 可以在命令行执行 python 命令, 进入 Python 交互式环境, 然后 import 安装的包, 如果不报错, 就说明安装成功了

python
Python 3.9.6 (default, Sep 26 2022, 11:37:49)
[Clang 14.0.0 (clang-1400.0.29.202)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import easydict
>>>

或者也可以用一条命令 python -c "import <package-name> 来验证是否安装, 没有报错就说明安装成功

然后就可以编写你的 Python 代码了, 写完后用 python my-code.py 来执行 Python 代码。

4.7. 退出虚拟环境

退出虚拟的 python 环境, 在命令行执行下面的命令即可:

deactivate

5. conda

5.1. conda 和 virtualenv 的区别

两者都是 python 的虚拟运行环境, 不一样的是

virtualenv: 如果你本地安装的 python 版本是 3.5, 那么创建出来的虚拟环境均是基于 3.5 版本的空的 python 环境

conda: 更强大, 在创建虚拟环境的时候, 可以选择用 python 的哪个版本, 如用 3.5 还是 3.6。由于不同版本 python 环境间还是有些不同的, 所以有时我们是需要创建出版本的 python 环境的, conda 就可以做到。

5.2. anaconda 和 miniconda 的区别

都是 conda, 大家可以理解为一个是完整安装, 一个是最小化安装

anaconda: 安装好后, 会安装很多个库, 占用空间大一些

miniconda: 是 conda 的一个最小化安装, 只会安装 conda, python 及一些常用的包, 如 pip, zlib 等, 可以用 conda install 命令安装其他包,

除此之外, 两者的命令都一样, 没有什么不同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云满笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值