2017-11-23 3 views
1

최근에 설치 한 모든 pip 패키지가 업데이트되어 더 이상 mpi4py를 가져올 수 없습니다. 로드하려고하면 대화 형 모드와 스크립트를 실행할 때 모두 ImportError: No module named mpi4py 오류가 발생합니다. (그것은 내가 아직 OS X 요세미티를 사용하고 관련이있는 경우.) (또한 모두 파이썬 2.7과 파이썬 3를 위해 일)Mac OS X에서 업데이트 후 Python 패키지를 가져 오지 못함

출력이 $ python -c "import mpi4py; print(mpi4py.__file__)"을 실행 :

Traceback (most recent call last): 
File "<string>", line 1, in <module> 
ImportError: No module named mpi4py` 

pip show -f mpi4py의 출력은 : 나는 python -c "import sys; print(sys.path)"을 실행하면

Name: mpi4py 
Version: 3.0.0 
Summary: Python bindings for MPI 
Home-page: https://bitbucket.org/mpi4py/mpi4py/ 
Author: Lisandro Dalcin 
Author-email: [email protected] 
License: BSD 
Location: /usr/local/lib/python2.7/site-packages 
Requires: 
Files: 
    mpi4py-3.0.0.dist-info/DESCRIPTION.rst,mpi4py-3.0.0.dist-info/INSTALLER,mpi4py-3.0.0.dist-info/METADATA,mpi4py-3.0.0.dist-info/RECORD,mpi4py-3.0.0.dist-info/WHEEL,mpi4py-3.0.0.dist-info/metadata.json,mpi4py-3.0.0.dist-info/top_level.txt,mpi4py/MPI.pxd,mpi4py/MPI.so,mpi4py/__init__.pxd,mpi4py/__init__.py,mpi4py/__init__.pyc,mpi4py/__main__.py,mpi4py/__main__.pyc,mpi4py/bench.py,mpi4py/bench.pyc,mpi4py/dl.so,mpi4py/futures/__init__.py,mpi4py/futures/__init__.pyc,mpi4py/futures/__main__.py,mpi4py/futures/__main__.pyc,mpi4py/futures/_base.py,mpi4py/futures/_base.pyc,mpi4py/futures/_lib.py,mpi4py/futures/_lib.pyc,mpi4py/futures/aplus.py,mpi4py/futures/aplus.pyc,mpi4py/futures/pool.py,mpi4py/futures/pool.pyc,mpi4py/futures/server.py,mpi4py/futures/server.pyc,mpi4py/include/mpi4py/mpi.pxi,mpi4py/include/mpi4py/mpi4py.MPI.h,mpi4py/include/mpi4py/mpi4py.MPI_api.h,mpi4py/include/mpi4py/mpi4py.h,mpi4py/include/mpi4py/mpi4py.i,mpi4py/libmpi.pxd,mpi4py/mpi.cfg,mpi4py/run.py,mpi4py/run.pyc 

내가 얻을 :

['', '$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 
+0

이것은 보통 xcode 오류이며 문제와 관련이 없습니다 (모든 python 패키지가 내 컴퓨터에서 정상적으로 작동하는 동안이 오류가 발생 함). '$ python -c "import mpi4py; print (mpi4py .__ file __)"'와'$ pip show -f mpi4py'를 실행하여 얻은 결과를 게시 할 수 있습니까? – hoefling

+0

아, 알겠습니다. 고마워요. 게시물에 추가했습니다. – RGWinston

+0

이상하게 - 파일'mpi4py/__ init __. py '가 있으므로 모듈을 가져올 수 있어야합니다. 파이썬 버전은 무엇입니까? '$ python -V' – hoefling

답변

1

, 우리는 문제를 발견 시스템 하나 (/usr/bin/python를)하고 아래 하나 "양조"$ brew install python를 통해 설치 위치 /usr/local/opt/python/libexec/bin/python. PATH에 빠졌기 때문에 $ python ... 명령은 시스템 파이썬을 참조했습니다. 모든 $ pip ... 명령은 양조 된 파이썬을 참조했습니다. 특히, mpi4py은 양조 된 버전 용으로 설치되고 업데이트되었으며 시스템 파이썬은이 버전에 액세스 할 수 없었습니다. 이 솔루션은 PATH로 다시 양조 파이썬을 추가했다 다음 ~/.bash_profile

export PATH="/usr/local/opt/python/libexec/bin:$PATH" 

.


필자는 이런 종류의 오류를 피하기 위해 양조 된 Python을 사용하지 않는 것을 선호합니다. 비록 많은 사람들이 시스템 파이썬을 깰 필요가 없다고 생각하는 경향이 있기 때문에 이것은 매우 비난 받아 왔지만. 또한이 구성에는 sudo이 필요합니다! 그럼에도 불구하고, 나는 내 방식으로 지금까지 문제가 발생하지 않았다, 그래서 이것은 내가 한 것입니다 : 당신이 양조 파이썬을 위해 설치 한

  1. 목록 모든 패키지 :

    $ pip list --format=freeze > packages-with-brewed-python.txt 
    

    우리는 의지를 이 파일을 시스템 파이썬으로 복원하려면이 파일이 필요합니다.

    : 당신은 파이썬이 설치 양조 한 경우

  2. , 제거하거나 (이것은 당신이 sudo이 필요합니다 유일한 단계) 시스템 파이썬에 대한 pip를 설치 ~/.bash_profile

  3. 에서 수출 라인을 주석으로 비활성화

    $ sudo easy_install pip 
    

    패키지를 추가하는 데 사용할 수있는 시스템 설치 번호는 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) 
    
  4. 제거 양조 파이썬 :

    $ brew uninstall python 
    
  5. 내가 pip로 설치할 때마다 패키지, 내가 --user 키와는 그래서 더 이상 sudo 필요하지 않습니다.

    $ rm -rf /usr/local/lib/python2.7/site-packages/ 
    

유일한 제한과 : 당신이 원하는 경우에 따라서 새로운 pip으로 패키지를 복원하려면, 당신은 지금 정리 양조 파이썬의 패키지는 일부 공간을 확보 할 수

$ pip install --user -r packages-with-brewed-python.txt 
  • 을 실행 이 접근 방식은 --user 키를 사용하여 패키지를 설치해야하므로 내 사용자 계정에서만 사용할 수 있습니다 (시스템 전체에 설치된 것은 없습니다). 나는 또한 관리자 권한이없는 사용자 계정 (나는 그것에 대한 별도의 계정이 있음)에서 작업하므로 기본적으로 sudo은 어쨌든 나를 위해 필요 없다.

    다시 말하지만 이것은 권장 사항이 아니지만 설치된 두 개의 동일한 Python 버전을 구별해야하는 필요성과 비교할 때 많은 어려움을 덜어 줬습니다.