树莓派上多版本python及pip安装使用管理指南 您所在的位置:网站首页 树莓派安装numpy120 树莓派上多版本python及pip安装使用管理指南

树莓派上多版本python及pip安装使用管理指南

2024-06-02 12:10| 来源: 网络整理| 查看: 265

python3在科学计算、深度学习等领域已经大行其道,python2也即将在2020年后逐渐退出历史舞台。但是,在树莓派上,很多软件依然依赖于python2,我们甚至不能将python默认版本设置为python3版本,否则在实际使用过程中可能面临诸多不必要的麻烦。在树莓派环境下,如果需要用到python3,还是建议大家使用python虚拟环境。

一、安装python

树莓派上安装了Python2.7及Python3.5(Raspbian Stretch 9.3),且默认使用Python2(即python是指向python2.7的)。 如果没有安装,可以使用以下方法安装:

1. 安装Python # 安装python(指向python2) sudo apt-get install python-dev # 安装python3 sudo apt-get install python3-dev 2. 调整python命令指向

技术层面上,我们可以在树莓派上将python命令指向python3:

sudo ln -s /usr/bin/python3.5 /usr/bin/python

但是,实际使用中,目前为止我还是不推荐这样的改动。因为在实践中我遇到了很多由此引起的不必要的问题。 我的建议是,要使用python3时,使用python3命令,或者使用虚拟环境。

二、安装pip 1. pip安装

一般来说Python2和Python3也都是各自安装有pip模块的。如果没有安装,可以使用以下方法安装:

首推使用官方pip安装脚本安装,可以安装最新版本的pip,获得更好的体验。

# 【荐】使用官方pip安装脚本安装(安装在python2的site-packages下)、安装pip3(安装在python3的site-packages下) curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py sudo python get-pip.py sudo python3 get-pip.py # 使用apt-get安装pip(安装在python2的dist-packages下)、安装pip3(安装在python3的dist-packages下) sudo apt-get install python-pip sudo apt-get install python3-pip # 使用easy_install模块安装pip(安装在python2的dist-packages下)、安装pip3(安装在python3的dist-packages下) sudo python -m easy_install pip sudo python3 -m easy_install pip

【注】:apt-get安装或者easy_install,包括后面用pip安装模块都会安装在python的dist-packages目录下,只有从源码安装才会安装在site-packages下。

2. pip升级

可以用以下方法升级pip:

​pip install --upgrade pip 或 ​pip install -U pip 或 python -m pip install --upgrade pip 或 python -m pip install -U pip 或 easy_install --upgrade pip 3. 调用pip

pip实际上是依赖于python环境的一个包,因此在使用pip安装模块时,究竟由哪个python环境调用就决定了模块被安装到了什么位置。 我们先来查看一下pip命令指向的python解释器:

#!/usr/bin/python # -*- coding: utf-8 -*- import re import sys from pip._internal import main if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) sys.exit(main())

因此可以确定,这种情况下直接调用pip命令的话,会把包安装到python2的环境下。 再看一下pip3命令:

#!/usr/bin/python3 # -*- coding: utf-8 -*- import re import sys from pip._internal import main if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) sys.exit(main())

与调整python命令指向类似,同样可以在技术层面上使pip命令默认指向python3环境下的pip模块,但是我不建议。

sudo nano /usr/local/bin/pip【具体位置可以用which pip查询,可能与此不同】 将第一句由#!/usr/bin/python2修改为#!/usr/bin/python3

除了直接使用pip/pip3命令外,直接用python -m/python3 -m命令调用pip/pip3更为准确,虽然可能麻烦了一些:

python -m pip install xxx python3 -m pip install xxx 三、pip配置

很多人在用到pip时,都是上来就是一顿pip install操作,对pip没有一个基本了解,以至于出现各种问题,例如安装慢、没有权限等。

1. 配置文件

Linux环境下,pip配置文件的位置可能为: 虚拟环境级别:$VIRTUAL_ENV/pip.conf 用户级别: ~/.pip/pip.conf 或者 ~/.config/pip/pip.conf(两者同时存在时,前者优先级最高)。 global级别:/etc/pip.conf 可以用pip config查看当前的配置:

# 列举当前配置 pip config list # 列举虚拟环境级别的配置 pip config --site list # 列举用户级别的配置 pip config --user list # 列举系统级别的配置 pip config --global list 2. 配置参数

配置文件中包含多个section,每个section包含用[]框起来[section header],以及具体的配置选项和参数。 section header来自于pip命令行的命令(如install, freeze等),以及一个[global]用于设置全局参数。

而具体的配置选项有两个来源:(1)来自于各个命令的选项的非缩写版本,如index-url等;(2)来自于General options,例如timeout,trusted-host等。

【注1】[global]下设置的参数可以在具体的section header下面再做自定义配置,pip将以具体的section header下的配置为准,例如:

[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] index-url=http://mirrors.aliyun.com/pypi/simple/

则index-url=http://mirrors.aliyun.com/pypi/simple/才是生效的。

【注2】前述了三个级别的配置文件,当三个级别的配置文件同时存在时,配置都会被加载进来,但是当配置选项存在冲突时,优先级虚拟环境级别(虚拟环境被激活)>用户级别>系统级别(需要权限)。

3. 示例:镜像源配置

在国内,pip默认的镜像源下载是很慢的。可以用以下配置修改国内的镜像源,清华、阿里、中科大等都有pypi的镜像源。

[install] index-url=http://mirrors.aliyun.com/pypi/simple/ # 表示信任mirrors.aliyun.com trusted-host=mirrors.aliyun.com

啰嗦一句,镜像源的配置可以放在user级别的配置文件中,避免每个虚拟环境都要配置,但也不必放在系统级别(需要权限)。虽然很多时候,我们可能都掌握着这个权限,但我的建议是,如果你不是个管理员,不懂得如何管理的话,还是把东西都放在user级别就可以了。

四、pip安装模块 - 安装位置选择与权限问题

pip没有做好安装位置选择时,比较容易出问题,如权限问题、安装位置混乱等。前面有提及site-packages和dist-packages的区别,但这里我们配置安装位置不需要精确到这两个目录,只需定位到lib的上一级目录即可,例如 系统级别:/usr/local/lib/ 用户级别:~/.local/ 虚拟环境级别:~/.virtualenvs/venv_name/ 在给sudo权限的情况下,默认安装到系统级别,安装在系统级别下的包所有用户都可以访问; 加上–user参数时,默认安装至用户级别目录; 在虚拟环境下,就会安装到虚拟环境级别目录。 安装位置也可以在配置文件中设置,例如:

[install] prefix=~/.virtualenvs/venv_name/

若非必要,建议不要自行配置安装位置,配置不好反而适得其反。啥时候必要呢?有的时候一些包会默认安装到系统级别,那么就会出现Permission Denied,可以尝试自定义prefix来解决这个问题。

【参考文献】

https://pip.pypa.io/en/stable/reference/pip_config/#options https://pip.pypa.io/en/stable/user_guide/#configuration



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有