我的MacOS里预装了2.6和2.7,后来又自己装了3.4,我今天想在3.4下用Numpy模块,发现没有,试了其他两个版本都自带了这个模块,我记得在win下装的话只要用pip3 install numpy就行,和2.X的差别就是多了个3,于是就试了下果然可以,但我费了老大劲也没看到3.4里有pip,所以产生了以下一些疑问:
- 2.X和3.X好像不是装在一个地方的?具体在哪?
- 怎么去看不同版本都装了哪些模块?
- 我有2.6和2.7两个版本,那要是用pip install到底是装进哪个版本里了?能否特殊化?
- 我这种win下的方法是否正统?还有其他方法吗?
- 我昨天试了个叫virtualenv的东西,对它的理解非常模糊,我不知道大家在平常是否会在这下面编写不同python版本的项目?
不是,Python “加装的模块”具体在
lib/pythonx.y/site-packages
下面,比如:/usr/lib/python3.4/site-packages/
make install
出来的/usr/local/bin/python2.7
下的第三方模块在:/usr/local/lib/python2.7/site-packages/
/usr/local/Cellar/python3/3.4.3/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/
通常可以用不同版本 Python 解释器对应的
pip list
来查看,比如:/usr/bin/pip3.4 list
/usr/local/bin/pip2.7 list
/usr/local/bin/pip3.4 list
另外,
pip freeze
作为更早的一个命令也可以用作查看已安装的包。可以通过查看
pip
命令文件的开头第一行,来确定它对应的 Python 解释器:可以吧,也可以下载下来 numpy 源码,用指定 Python 解释器来执行
setup.py
,比如:会的,洁癖必需品。
virtualenv 会在用户空间创建一个文件夹,里面就包含了一个“完整的”Python 运行时环境,比如:
然后我可以进入这个环境:
随即,
$PATH
的最前面会冠以/home/fantix/py3kenv/bin:
,因此,再执行的比如python
或pip
则都在该虚拟环境中了,所以此时pip install
或者python setup.py install
造成的影响会仅限于/home/fantix/py3kenv/
这个文件夹中,而不会对系统环境(/usr/lib/python3.4/site-packages
)有任何影响,也不需要 root 权限,而且在使用完毕不再需要它之后,可以一删了之。