Mac OS X上更新后未导入Python包
我最近更新了我安装的所有pip软件包,无法再导入mpi4py。如果我尝试加载它,则在交互模式下和运行脚本时都会出现一个错误Mac OS X上更新后未导入Python包,python,macos,mpi,Python,Macos,Mpi,我最近更新了我安装的所有pip软件包,无法再导入mpi4py。如果我尝试加载它,则在交互模式下和运行脚本时都会出现一个错误ImportError:No module named mpi4py。(对于Python2.7和Python3也是如此。)(如果相关的话,我仍然在使用OS X Yosemite。) 运行$python-c“导入mpi4py;打印(mpi4py.\uuuuu文件)”输出为: Traceback (most recent call last): File "<string
ImportError:No module named mpi4py
。(对于Python2.7和Python3也是如此。)(如果相关的话,我仍然在使用OS X Yosemite。)
运行$python-c“导入mpi4py;打印(mpi4py.\uuuuu文件)”
输出为:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named mpi4py`
如果我运行python-c“import sys;print(sys.path)”
['', '$HOME',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/Users/cns08/Library/Python/2.7/lib/python/site-packages',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC',
'/Library/Python/2.7/site-packages']
而echo$PATH
给了我:
/usr/local/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin
:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/TeX/texbin
我们一起发现了这个问题—您的机器上安装了两台python—系统版(
/usr/bin/python
)和“brewed”版,通过$brew install python
安装,位于/usr/local/opt/python/libexec/bin/python
下。它在路径中丢失,因此命令$python…
引用了系统python。不过,所有的$pip…
命令都引用了酝酿的python。特别是,为酝酿的版本安装并更新了mpi4py
,而系统python无法访问它。解决方案是将煮好的python添加回路径:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
在~/.bash\u配置文件中
至于我,我不喜欢使用酝酿的python来避免这种错误。尽管这是非常固执己见的,因为许多人不喜欢修补python系统,也不喜欢破坏它。此外,此配置还需要sudo
!不过,到目前为止,我的方法没有遇到任何问题,所以我就是这么做的:
列出您为编写的python安装的所有软件包:
$ pip list --format=freeze > packages-with-brewed-python.txt
$ brew uninstall python
我们需要这个文件来用python系统还原它们
如果已安装brewed python,请从~/.bash\u profile
为系统python安装pip
(这是唯一需要sudo
的步骤):
现在,系统安装了pip
可以用来添加软件包。通过发出pip-V
检查它:
$ pip -V
pip 9.0.1 from /Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg (python 2.7)
卸载编写的python:
$ pip list --format=freeze > packages-with-brewed-python.txt
$ brew uninstall python
我使用pip
安装的每个软件包都使用--user
键,因此我不再需要sudo
。因此,要使用新的pip
恢复包,请运行
$ pip install --user -r packages-with-brewed-python.txt
如果愿意,现在可以清理编写好的python包以释放一些空间:
$ rm -rf /usr/local/lib/python2.7/site-packages/
这种方法对我的唯一限制是,我需要安装带有--user
键的软件包,这样它们只能在我的用户帐户上使用(系统范围内没有安装任何软件包)。我还使用一个没有管理员权限的用户帐户(我有一个单独的帐户),所以基本上,sudo
对我来说是不可能的
同样,这不是什么建议,但与区分安装的两个相同python版本的必要性相比,它为我省去了许多麻烦。这通常是一个xcode错误,与您的问题无关(当所有python包在我的机器上正常工作时,我也会遇到此错误)。您能否发布通过运行$python-c“import-mpi4py;print(mpi4py.\uuuuuu文件)”和$pip show-f mpi4py
获得的输出?啊,好的,谢谢。我已经将这些添加到帖子中,这很奇怪-文件mpi4py/\uuuu init\uuuu.py
在那里,因此模块应该是可导入的。你的python版本是什么$python-V
我的python版本是python2.7.10
哦,我现在看到了-你可能有两个python,系统版和酿造版。您能执行$python-c“import sys;print(sys.path)”
来确认它还是证明我错了?另外,$echo$PATH
也很整洁。