问题
在虚拟环境下导入 requirements.txt 环境需求包时, 发现一个坑(知识匮乏点):
pip -r install requirements.txt 和 sudo pip -r install requirements.txt
这两者安装的包所在位置不同, 前者安装在"虚拟环境"里面, 后者则安装在"全局环境"中。
演示
- 首先创建一个虚拟环境
python@ubuntu:~/Desktop$ mkvirtualenv test -p python3
- 查看一下 pip 列表
(test) python@ubuntu:~/Desktop$ pip list
Package Version
------------- -------
pip 19.1.1
pkg-resources 0.0.0
setuptools 41.0.1
wheel 0.33.4
此时 pip list 中只有上面这些包
- 查看 pip 路径与版本
(test) python@ubuntu:~/Desktop$ pip --version
pip 19.1.1 from /home/python/.virtualenvs/test/lib/python3.5/site-packages/pip (python 3.5)
这边可以发现该 pip 的版本为19.1.1, 路径位于虚拟环境 test 下
- 同样的方式查看 sudo pip
(test) python@ubuntu:~/Desktop$ sudo pip list
Package Version
----------------------------- ---------
apturl 0.5.2
beautifulsoup4 4.4.1
blinker 1.3
Brlapi 0.6.4
certifi 2019.6.16
chardet 3.0.4
checkbox-support 0.22
command-not-found 0.3
configparser 3.7.4
cryptography 1.2.3
decorator 4.0.6
defer 1.0.6
......
这边只列出了部分包, 可以明显看出该 pip list 中的包多得多
(test) python@ubuntu:~/Desktop$ sudo pip --version
pip 19.1.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)
这边也可以看出该 pip 路径位于本机python3中
总结
坑虽小, 掉进去却很难脱困.
不过只要有耐心和细心, 跳出来的过程将会变得非常有趣。