Python中mac os下库的路径问题如何解决

我使用 pip 安装的库,打开 Python 解释器后均出现 import error。
其中 pip 和 Python 路径和版本一致:

➜  ~ which pip
/usr/local/bin/pip
➜  ~ which python
/usr/local/bin/python

➜ ~ pip --version pip 9.0.1 from /Library/Python/2.7/site-packages (python 2.7) ➜ ~ python Python 2.7.13 (default, Dec 18 2016, 07:03:39) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin Type “help”, “copyright”, “credits” or “license” for more information. >>> import sys >>> sys.path [’’, ‘/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python27.zip’, ‘/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7’, ‘/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin’, ‘/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac’, ‘/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages’, ‘/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk’, ‘/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old’, ‘/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload’, ‘/usr/local/lib/python2.7/site-packages’, ‘/usr/local/Cellar/protobuf/3.2.0_1/libexec/lib/python2.7/site-packages’]

导入sys库,输出sys.path后发现不太对,感觉是 Python 环境不对导致的。小弟刚用 mac ox 不太会用,求问这个问题怎么解决。


Python中mac os下库的路径问题如何解决

7 回复

可能是你的 pip 是 mac 自带 Python 的,而不是后来你用 brew 装 Python 的吧


在macOS上,Python库的路径问题通常是因为系统Python、Homebrew安装的Python或者你自己安装的Python(比如通过pyenv)混在一起导致的。核心就是搞清楚sys.path里各个路径的优先级,以及PYTHONPATH环境变量怎么影响它。

最直接的办法就是用代码看看当前Python到底在哪些地方找库:

import sys
print(sys.path)

你会看到一个列表,Python会按这个顺序搜索模块。排在前面的路径优先级更高。

常见情况和解决办法:

  1. 使用虚拟环境:这是最干净的办法。用venv或者virtualenv创建一个独立环境,它的site-packages路径会优先被搜索。

    python3 -m venv myenv
    source myenv/bin/activate
    # 然后安装的包就都在这个环境里了
    
  2. pip安装时指定Python解释器:如果你有多个Python,确保用对应解释器的pip安装。比如:

    /usr/local/bin/python3 -m pip install package_name
    # 或者
    python3 -m pip install package_name
    
  3. 修改PYTHONPATH环境变量(临时或针对项目):在终端里设置,或者写在你的shell配置文件(如~/.zshrc)里。

    export PYTHONPATH="/your/custom/path:$PYTHONPATH"
    
  4. .pth文件:在Python的site-packages目录里创建一个.pth文件,里面写上你要添加的路径(一行一个)。Python启动时会读取。

  5. 程序内修改sys.path(通常不推荐,但有时方便):在你的脚本开头加:

    import sys
    sys.path.insert(0, '/path/to/your/module')
    

怎么检查问题?

  • which python3which pip3 看看指向哪里。
  • python3 -m site 查看详细的站点配置信息。
  • 检查你的IDE或编辑器配置的Python解释器路径是否正确。

一句话总结:优先用虚拟环境隔离,确保pip和python对应,必要时手动调整路径。

python -m pip --version


<br>⋊&gt; ~ python -m pip --version 11:10:37<br>pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)<br>⋊&gt; ~ pip --version 11:10:49<br>pip 9.0.1 from /Library/Python/2.7/site-packages (python 2.7)<br>

是这个问题…

你用的啥解释器?一般解释器都是可以修改 python 环境的,我用的 pycharm 就是可以直接切换环境的

我现在基本只用 virtualenv 了,用的时候 source,不用了直接 rm。

我用 IDE 没问题,就是习惯性开个 shell 打开 Python 测试一些东西的时候用不了 很尴尬

我写项目的时候用虚拟环境,但是平时随手跑个什么都习惯用全局环境

回到顶部