Python 모듈 가져 오기는 명령 행에서 작동하지만 PyCharm에서는 작동하지 않습니다.


8

내 기본 Python 바이너리는 Anaconda 배포판이있는 것으로 설정됩니다. 이것은에 있으며 /home/karnivaurus/anaconda/bin/python.bashrc파일에 다음 을 추가하여 기본값으로 설정했습니다 export PATH=/home/karnivaurus/anaconda/bin:$PATH.

또한에 위치한 Python 패키지 caffe가 있으며 파일에 다음 /home/karnivaurus/caffe/distribute/python을 추가하여 패키지 검색 경로에 추가했습니다 ..bashrcexport PYTHONPATH=${PYTHONPATH}:/home/karnivaurus/caffe/distribute/python

이제 test.py다음과 같은 간단한 Python 파일이 있습니다.

import caffe
print "Done."

python test.py터미널 에 입력하여이 작업을 실행하면 "완료"가 인쇄되어 정상적으로 실행됩니다. 내가 겪고있는 문제는 PyCharm IDE에서이를 실행할 때입니다. PyCharm에서는 인터프리터를로 설정했습니다 /home/karnivaurus/anaconda/bin/python. 그러나 test.pyPyCharm에서 열고 IDE에서 파일을 실행하면 다음 오류가 발생합니다.

ImportError: No module named caffe

그래서 내 질문은 : 왜 caffe파이썬 스크립트를 실행할 때 PyCharm이 모듈을 찾을 수 없지만 터미널에서 스크립트를 실행할 때 찾을 수 있습니까?

감사합니다!


2
PyCharm은 .bashrcbash 특정 구성 파일이기 때문에, 신경 쓰지 않는 것 같습니다 . 해당 변수를 PyCharm 또는 다음과 같이 설정해야합니다..profile
Byte Commander

답변:


11

ByteCommander가 주석에서 말했듯이 PyCharm은 bashrc를 사용하지 않으므로 라이브러리가 어디에 있는지 알지 못합니다.

인터프리터를 추가 한 동일한 화면에서 휠 아이콘을 볼 수 있습니다. 휠 아이콘을 클릭하면 메뉴가 표시됩니다. 다음과 같은 화면이 나타납니다.

PyCharm 인터프리터 구성

통역사를 선택하고 마지막 버튼을 클릭해야합니다. 이 창이 열립니다.

인터프리터 경로 구성

더하기 아이콘을 클릭하면 라이브러리에 대한 경로를 추가 할 수 있습니다.


2
그리고 이것은 GUI보다 명령 줄로 명령을 내리기가 더 쉬운 이유에 대한 좋은 예입니다.
Javier Rivera

감사. 이것이 바이너리 라이브러리와 파이썬 모듈 모두에 경로를 추가하는 방법입니까? 아니면 파이썬 소스를 "소스 루트"에 추가해야합니까?
Karnivaurus

1
양자 모두. 해당 모듈을 변경하려는 경우에만 소스 루트를 사용해야합니다 (완료, 문서화 또는 '소스로 이동'을 위해 소스 루트에 추가하지 않아도 됨).
Javier Rivera

5

Ubuntu 실행기에서 시작한 프로그램은 읽지 않습니다.bashrc . PyCharm에서 경로를 설정하는 대신 Bash 쉘에서 PyCharm을 시작하여 설정 한 환경 변수에 액세스 할 수 있습니다 .bashrc.


런처에서 시작할 때 프로그램이 .bash_rc 파일을 읽도록하는 방법이 있습니까?
007

0

다음 단축키 ( Ctrl+ Alt+ S)를 열고 (프로젝트 : xxxx)를 클릭 한 다음 (프로젝트 구조)를 선택하고 ( /home/yourUser/PycharmProjects/XXXX/venv/bin)를 선택 하고 (제외) 또는 ( Alt+ E)를 마우스 오른쪽 버튼으로 클릭하십시오 .

이제 (+ 컨텐츠 루트 추가 /home/ yourUser/PycharmProjects/XXXXX/venv/bin)를 클릭 하고 다음 위치 ( )를 가리키는 지 확인하고 확인을 클릭하십시오. 이제 IDE를 닫았다가 다시여십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.