MacOS下不同版本Python安装如Numpy等第三方模块的疑问?


我的MacOS里预装了2.6和2.7,后来又自己装了3.4,我今天想在3.4下用Numpy模块,发现没有,试了其他两个版本都自带了这个模块,我记得在win下装的话只要用pip3 install numpy就行,和2.X的差别就是多了个3,于是就试了下果然可以,但我费了老大劲也没看到3.4里有pip,所以产生了以下一些疑问:

  1. 2.X和3.X好像不是装在一个地方的?具体在哪?
  2. 怎么去看不同版本都装了哪些模块?
  3. 我有2.6和2.7两个版本,那要是用pip install到底是装进哪个版本里了?能否特殊化?
  4. 我这种win下的方法是否正统?还有其他方法吗?
  5. 我昨天试了个叫virtualenv的东西,对它的理解非常模糊,我不知道大家在平常是否会在这下面编写不同python版本的项目?

python mac numpy

巴•M•麻美 10 years, 6 months ago
  1. 不是,Python “加装的模块”具体在 lib/pythonx.y/site-packages 下面,比如:

    • 常规 Linux 发行版自带的 Python 3.4 第三方模块在: /usr/lib/python3.4/site-packages/
    • Python 官方源码 make install 出来的 /usr/local/bin/python2.7 下的第三方模块在: /usr/local/lib/python2.7/site-packages/
    • OS X 下用 HomeBrew 安装的 Python 2.7 下的第三方模块在: /usr/local/Cellar/python3/3.4.3/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/
  2. 通常可以用不同版本 Python 解释器对应的 pip list 来查看,比如:

    • /usr/bin/pip3.4 list
    • /usr/local/bin/pip2.7 list
    • /usr/local/bin/pip3.4 list

    另外, pip freeze 作为更早的一个命令也可以用作查看已安装的包。

  3. 可以通过查看 pip 命令文件的开头第一行,来确定它对应的 Python 解释器:

      
       #!/usr/local/bin/python3.4
      
     
  4. 可以吧,也可以下载下来 numpy 源码,用指定 Python 解释器来执行 setup.py ,比如:

      
       /usr/local/bin/python2.7 setup.py install
      
     
  5. 会的,洁癖必需品。

    virtualenv 会在 用户空间 创建一个文件夹,里面就包含了一个“完整的”Python 运行时环境,比如:

      
       /home/fantix/py3kenv/bin/python
    /home/fantix/py3kenv/bin/python3
    /home/fantix/py3kenv/bin/python3.4
    /home/fantix/py3kenv/bin/pip
    /home/fantix/py3kenv/bin/pip3
    /home/fantix/py3kenv/bin/pip3.4
    /home/fantix/py3kenv/lib/python3.4/site-packages/...
      
     

    然后我可以 进入 这个环境:

      
       source ~/py3kenv/bin/activate
      
     

    随即, $PATH 的最前面会冠以 /home/fantix/py3kenv/bin: ,因此,再执行的比如 python pip 则都在该虚拟环境中了,所以此时 pip install 或者 python setup.py install 造成的影响会仅限于 /home/fantix/py3kenv/ 这个文件夹中,而不会对系统环境( /usr/lib/python3.4/site-packages )有任何影响,也不需要 root 权限,而且在使用完毕不再需要它之后,可以一删了之。

某zero answered 10 years, 6 months ago

Your Answer