zoukankan      html  css  js  c++  java
  • mac上装有多个python和多个pip,pip到底是指向哪个python?以及如何修改这种行为?

    这个问题从我两年半前学python就困惑着我(至今python水平也没有提高..).

    我的问题是, which python3告诉我, 是/usr/local/bin/python3, which pip3告诉我, 是/usr/local/bin/pip3. 但是当我pip3 show requests时, 啥结果也没有, 虽然我肯定我装了这个包.

    首先需要搞清楚, pip和python之间的关系是什么. 是一个版本的pip对应一个python解释器么? 还是一个pip可以对应多个python? 其实pip是某个python的包. 所以可以说一个python解释器对应一个pip./usr/local/bin/pip3是个symlink, 指向的其实是某个可执行文件. 怎么知道它指向的是哪个可执行文件? 可以用这个python -c "import os; print(os.path.realpath('/usr/local/bin/pip3'))", 其实相当于GNU下的readlink -f, 但mac的readlink不是GNU的, 不支持递归(虽然这个例子里, 不需要递归, mac上直接readlink pip3也行). 总之我得到了

    /usr/local/Cellar/python@3.8/3.8.5/bin/pip3
    

    这下我知道了, usr/local/bin/下的pip3不是我想要的.

    我不想要它, 想把python3.7的pip3替代它.

    我只需要找到python3.7中的pip3的位置即可. python3 -m pip -V 可以做到. 得到了

    /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pip
    

    不过这是个目录. 不是脚本. 那怎么办? 我电脑上还装着anaconda的python, 我把它的pip内容给拷贝了, 改一改第一行shebang中的解释器. 然后放在/usr/local/bin下. 具体内容如下.

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

    是不是这就完了? 还不行. 需要给它添加可执行权限. 这下执行/usr/local/bin/pip就可以了.

    但是此时执行pip, 还不是/usr/local/bin/pip, 需要重新打开一个session, 那么首先被搜索到的就是它了.

    终于解决了我多年的疑惑, 开心几分钟. 顺便我用类似的想法, 修改了python的指向, 本来它是指向python2.7的, 现在也指向了我想要的python版本.

    注: 我对python了解很浅, 很可能有错误, 希望大家指出, 谢谢.

  • 相关阅读:
    OK335xS-Android mkmmc-android-ubifs.sh hacking
    OK335xS-Android pack-ubi-256M.sh hacking
    OK335xS Ubuntu 12.04.1 版本 Android 开发环境搭建
    Qt Quick Hello World hacking
    Qt QML referenceexamples attached Demo hacking
    QT 5.4.1 for Android Ubuntu QtWebView Demo
    I.MX6 working note for high efficiency
    QT 5.4.1 for Android Windows环境搭建
    mkbootimg hacking
    Generate And Play A Tone In Android hacking
  • 原文地址:https://www.cnblogs.com/Tokubara/p/14115876.html
Copyright © 2011-2022 走看看