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下库的路径问题如何解决
可能是你的 pip 是 mac 自带 Python 的,而不是后来你用 brew 装 Python 的吧
在macOS上,Python库的路径问题通常是因为系统Python、Homebrew安装的Python或者你自己安装的Python(比如通过pyenv)混在一起导致的。核心就是搞清楚sys.path里各个路径的优先级,以及PYTHONPATH环境变量怎么影响它。
最直接的办法就是用代码看看当前Python到底在哪些地方找库:
import sys
print(sys.path)
你会看到一个列表,Python会按这个顺序搜索模块。排在前面的路径优先级更高。
常见情况和解决办法:
-
使用虚拟环境:这是最干净的办法。用
venv或者virtualenv创建一个独立环境,它的site-packages路径会优先被搜索。python3 -m venv myenv source myenv/bin/activate # 然后安装的包就都在这个环境里了 -
用
pip安装时指定Python解释器:如果你有多个Python,确保用对应解释器的pip安装。比如:/usr/local/bin/python3 -m pip install package_name # 或者 python3 -m pip install package_name -
修改
PYTHONPATH环境变量(临时或针对项目):在终端里设置,或者写在你的shell配置文件(如~/.zshrc)里。export PYTHONPATH="/your/custom/path:$PYTHONPATH" -
.pth文件:在Python的site-packages目录里创建一个.pth文件,里面写上你要添加的路径(一行一个)。Python启动时会读取。 -
程序内修改
sys.path(通常不推荐,但有时方便):在你的脚本开头加:import sys sys.path.insert(0, '/path/to/your/module')
怎么检查问题?
which python3和which pip3看看指向哪里。python3 -m site查看详细的站点配置信息。- 检查你的IDE或编辑器配置的Python解释器路径是否正确。
一句话总结:优先用虚拟环境隔离,确保pip和python对应,必要时手动调整路径。
<br>⋊> ~ python -m pip --version 11:10:37<br>pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)<br>⋊> ~ 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 测试一些东西的时候用不了 很尴尬
我写项目的时候用虚拟环境,但是平时随手跑个什么都习惯用全局环境


