在进行python相关学习中,会不断遇到要装新的包,需要了解当前包的版本,包的位置等,以便选择设置安装新包的路径及版本等,籍此,小结如下:
本文主要内容转载于「姬小野」的博文,原文链接:https://blog.csdn.net/wjh2622075127/article/details/88323044
一、如何查看python某个包的版本?
1、pip list // 全部,在里面找
2、pip freeze // 全部
3、pip show numpy // 单个
4、conda list numpy // 单个
二、查看包的位置
find 查找某个文件 find / -name mysql
which查找命令:通过path环境变量查找执行运行的文件路径.#动作和locate类似都是访问数据库的信息,所以比find(遍历硬盘)快,但有时因数据库更新不及时,而不能即时真实反映事实.
root@raspberrypi:/home/pi# which openssl
/usr/bin/openssl
root@raspberrypi:/home/pi#
whereis 由于软件安装的地方可能不止一个地方,查看文件安装的所有路径(地址)
如果没有安装pygame或者pygame安装没成功(又或者没有添加在路径里),则不会显示文件路径出来。只提示:
whereis(选项)(参数)
-b:只查找二进制文件;
-B<目录>:只在设置的目录下查找二进制文件;
-f:不显示文件名前的路径名称;
-m:只查找说明文件;
-M<目录>:只在设置的目录下查找说明文件;
-s:只查找原始代码文件;
-S<目录>只在设置的目录下查找原始代码文件;
-u:查找不包含指定类型的文件。
root@raspberrypi:/home/pi# whereis pygame
pygame:
root@raspberrypi:/home/pi#
通过命令:find / -name pygame
查得:
/usr/lib/python3/dist-packages/pygame
将该路径添加致path:
export PATH=/usr/lib/python3/dist-packages/pygame:$PATH
查看PATH环境变量:echo $PATH
root@raspberrypi:/home/pi# echo $PATH
/usr/lib/python3/dist-packages/pygame:/home/pi/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
再次查看whereis pygame:
root@raspberrypi:/home/pi# whereis pygame
pygame: /usr/lib/python3/dist-packages/pygame/pygame.ico #这时已经有了路径位置显示
root@raspberrypi:/home/pi#
上述方法的PATH 在终端关闭后就会消失。
所以还是建议通过编辑/etc/profile来改PATH,也可以改home目录下的.bashrc(即:~/.bashrc)。
etc/profile和/etc/environment的比较
先将export LANG=zh_CN加入/etc/profile ,退出系统重新登录,登录提示显示英文。将/etc/profile 中的export LANG=zh_CN删除,将LNAG=zh_CN加入/etc/environment,退出系统重新登录,登录提示显示中文。用户环境建立的过程中总是先执行/etc/profile然后在读取/etc/environment。为什么会有如上所叙的不同呢?
登录时应该是先执行/etc/environment,后执行/etc/profile。
/etc/environment是设置整个系统的环境,而/etc/profile文件是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。
对于用户的SHELL初始化而言是先执行/etc/profile,再读取文件/etc/environment.对整个系统而言是先执行/etc/environment。这样理解正确吗?
/etc/enviroment --> /etc/profile --> $HOME/.profile -->$HOME/.env (如果存在)
/etc/profile 是所有用户的环境变量
/etc/enviroment是系统的环境变量
登陆系统时shell读取的顺序应该是
/etc/profile ->/etc/enviroment -->$HOME/.profile -->$HOME/.env
如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该是以用户环境为准了。
/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
修改/etc/profile之后,使立即生效:source /etc/profile #关于source命令,参阅http://www.51testing.com/html/38/225738-206878.html
(关于path环境变量如何设置,参阅https://blog.csdn.net/qingkongyeyue/article/details/52733203)
二、列出全部outdated(可更新)的包
pip list --outdated --format=legacy #常写为pip list -o
pip list --outdated --format=columns
这两个命令的区别是列表的方式不一样。且他们的命令执行时间都非常的长。
三、更新单个包如numpy
pip install --upgrade numpy #现在版本提示用python(python3) -m pip install --upgrade numpy
或者
pip install -U numpy
四、更新全部包
需要用到一个叫pip-review的执行程序
首先通过pip下载pip install pip-review
然后执行以下命令:pip-review --local --interactive
或者执行下面python程序
from pip._internal.utils.misc import get_installed_distributions
from subprocess import call
for dist in get_installed_distributions():
call("pip install --upgrade " + dist.project_name, shell=True)
:( 不过更新全部包不是非常靠谱,毕竟更新一个包都经常出问题!何况是更新所有的。
五、卸载包的方法
和安装的方法类似
pip uninstall numpy