[python] Python 오류“ImportError : No module named”

파이썬은 로컬 디렉토리에 설치됩니다.

내 디렉토리 트리는 다음과 같습니다

(local directory)/site-packages/toolkit/interface.py

내 코드는 다음과 같습니다.

(local directory)/site-packages/toolkit/examples/mountain.py

예제를 실행하려면을 작성 python mountain.py하고 코드에 작성하십시오.

from toolkit.interface import interface

그리고 오류가 발생합니다.

Traceback (most recent call last):
  File "mountain.py", line 28, in ?
    from toolkit.interface import interface
ImportError: No module named toolkit.interface

나는 이미 확인 sys.path했고 거기에 디렉토리가 /site-packages있습니다. 또한 __init__.py.bin툴킷 폴더에 파일 이 있는데 이는 파이썬에게 이것이 패키지임을 나타냅니다. 또한 __init__.py.binexamples 디렉토리에 있습니다.

파이썬이 왜 파일을 찾을 수 없는지 모르겠습니다 sys.path. 어떤 아이디어? 권한 문제 일 수 있습니까? 실행 권한이 필요합니까?



답변

orip의 게시물에 대한 귀하의 의견을 바탕으로, 이것이 일어난 일이라고 생각합니다.

  1. __init__.py창에서 편집 했습니다.
  2. Windows 편집기는 캐리지 리턴 (Windows의 줄 끝은 CR / LF, 유닉스에서는 LF에만 해당) 또는 CTRL-Z (Windows 파일 끝)와 같이 인쇄하지 않는 것을 추가했습니다.
  3. WinSCP를 사용하여 파일을 유닉스 박스에 복사했습니다.
  4. WinSCP는 다음과 같이 생각했다. “이것은 기본 텍스트가 아닌 것을 가지고있다. 바이너리 데이터를 나타 내기 위해 .bin 확장자를 붙일 것이다.”
  5. 누락 __init__.py(현재라고 함 __init__.py.bin)은 파이썬이 툴킷을 패키지로 이해하지 못한다는 것을 의미합니다.
  6. __init__.py적절한 디렉토리에 작성 하면 모든 것이 작동합니다 …?

답변

않습니다

(local directory)/site-packages/toolkit

__init__.py?

수입하려면 도보 당신의 디렉토리를 통해이 모든 디렉토리가 있어야합니다 __init__.py파일을.


답변

LPTHW에서이 운동을했을 때 매우 비슷한 일이있었습니다. 필자가 호출 한 디렉토리에 파일이 있음을 Python이 인식하도록 할 수 없었습니다. 그러나 결국에는 작동하도록 할 수있었습니다. 내가 한 일과 내가 추천하는 것은 이것을 시도하는 것입니다.

(참고 : 초기 게시물에서 * NIX 기반 컴퓨터를 사용하고 명령 줄에서 작업을 수행한다고 가정 하므로이 조언은 그에 맞게 조정되었습니다. 우분투를 실행하기 때문에 이것이 내가 한 일입니다)

1) 디렉토리 (cd)를 파일이 있는 디렉토리 의 디렉토리로 변경하십시오. 이 경우 mountain.py파일 을 실행 하려고하고 toolkit.interface.py별도의 디렉토리에 있는 모듈 을 호출하려고합니다 . 이 경우 두 파일 모두에 대한 경로가 포함 된 디렉토리 (또는 두 파일의 경로가 공유하는 가장 가까운 디렉토리)로 이동합니다. 이 경우 toolkit디렉토리 는 어느 것입니까 ?

2) tookit디렉토리 에있을 때 명령 행에 다음 코드 행을 입력하십시오.

export PYTHONPATH=.

이는 PYTHONPATH를 “.”로 설정합니다. 이는 기본적으로 PYTHONPATH가 현재있는 디렉토리 내에서 (그리고 현재 디렉토리하위 디렉토리 분기 에서) 호출 된 파일을 찾습니다 . 그래서 당신의 현재 디렉토리에 보이지만, 모든 디렉토리에서하지 않습니다 ) 현재 디렉토리.

3) 위 단계에서 PYTHONPATH를 설정 한 후 현재 디렉토리 ( toolkit디렉토리) 에서 모듈을 실행하십시오 . 파이썬은 이제 지정한 모듈을 찾아서로드해야합니다.

도움이 되었기를 바랍니다. 나는 이것에 대해 매우 좌절했다.


답변

* nix에서 PYTHONPATH가 올바르게 구성되어 있는지, 특히 다음 형식을 갖는지 확인하십시오.

 .:/usr/local/lib/python

( .:처음 에는를 염두 에두고 현재 디렉토리에서도 검색 할 수 있습니다.)

버전에 따라 다른 위치에있을 수도 있습니다.

 .:/usr/lib/python
 .:/usr/lib/python2.6
 .:/usr/lib/python2.7 and etc.


답변

나는 내 자신의 문제를 해결했으며, 잘못된 것들과 해결책에 대한 요약을 작성합니다.

파일을 정확히 호출해야합니다 __init__.py. 내 경우와 같이 확장명이 다르면 .py.binPython은 디렉토리를 이동할 수 없으며 모듈을 찾을 수 없습니다. 파일을 편집하려면 vi 또는 nano 와 같은 Linux 편집기를 사용해야합니다 . Windows 편집기를 사용하면 숨겨진 문자가 작성됩니다.

그것에 영향을 준 또 다른 문제는 루트로 다른 파이썬 버전을 설치했기 때문에 누군가 로컬 파이썬 설치로 작업하는 경우 프로그램을 실행하는 파이썬 설치가 로컬 파이썬인지 확인하십시오. 이를 확인하려면 그냥 수행 which python하고 실행 파일이 로컬 디렉토리에있는 파일인지 확인하십시오. 그렇지 않은 경우 경로를 변경하되 로컬 Python 디렉토리가 다른 Python보다 앞에 있는지 확인하십시오.


답변

쉬운 해결책은
관리자 제한의 경우 sudo를 사용할 수있는 python -m pip install <library-name>대신 대신 모듈을 설치하는 것입니다.pip install <library-name>


답변

디렉토리를 패키지로 표시하려면이라는 파일이 필요합니다. __init__.py도움이 되나요?