복붙노트

[PYTHON] 가져 오기 오류 : 'No module named'* does * exist

PYTHON

가져 오기 오류 : 'No module named'* does * exist

피라미드 pserve 시작할 때이 스택 추적 점점 :

% python $(which pserve) ../etc/development.ini
Traceback (most recent call last):
  File "/home/hughdbrown/.local/bin/pserve", line 9, in <module>
    load_entry_point('pyramid==1.5', 'console_scripts', 'pserve')()
  File "/home/hughdbrown/.virtualenvs/ponder/local/lib/python2.7/site-packages/pyramid-1.5-py2.7.egg/pyramid/scripts/pserve.py", line 51, in main
    return command.run()
  File "/home/hughdbrown/.virtualenvs/ponder/local/lib/python2.7/site-packages/pyramid-1.5-py2.7.egg/pyramid/scripts/pserve.py", line 316, in run
    global_conf=vars)
  File "/home/hughdbrown/.virtualenvs/ponder/local/lib/python2.7/site-packages/pyramid-1.5-py2.7.egg/pyramid/scripts/pserve.py", line 340, in loadapp
    return loadapp(app_spec, name=name, relative_to=relative_to, **kw)
  File "/home/hughdbrown/.virtualenvs/ponder/lib/python2.7/site-packages/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 247, in loadapp
    return loadobj(APP, uri, name=name, **kw)
  File "/home/hughdbrown/.virtualenvs/ponder/lib/python2.7/site-packages/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 271, in loadobj
    global_conf=global_conf)
  File "/home/hughdbrown/.virtualenvs/ponder/lib/python2.7/site-packages/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 296, in loadcontext
    global_conf=global_conf)
  File "/home/hughdbrown/.virtualenvs/ponder/lib/python2.7/site-packages/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 320, in _loadconfig
    return loader.get_context(object_type, name, global_conf)
  File "/home/hughdbrown/.virtualenvs/ponder/lib/python2.7/site-packages/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 454, in get_context
    section)
  File "/home/hughdbrown/.virtualenvs/ponder/lib/python2.7/site-packages/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 476, in _context_from_use
    object_type, name=use, global_conf=global_conf)
  File "/home/hughdbrown/.virtualenvs/ponder/lib/python2.7/site-packages/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 406, in get_context
    global_conf=global_conf)
  File "/home/hughdbrown/.virtualenvs/ponder/lib/python2.7/site-packages/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 296, in loadcontext
    global_conf=global_conf)
  File "/home/hughdbrown/.virtualenvs/ponder/lib/python2.7/site-packages/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 337, in _loadfunc
    return loader.get_context(object_type, name, global_conf)
  File "/home/hughdbrown/.virtualenvs/ponder/lib/python2.7/site-packages/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/loadwsgi.py", line 681, in get_context
    obj = lookup_object(self.spec)
  File "/home/hughdbrown/.virtualenvs/ponder/lib/python2.7/site-packages/PasteDeploy-1.5.2-py2.7.egg/paste/deploy/util.py", line 68, in lookup_object
    module = __import__(parts)
  File "/home/hughdbrown/.virtualenvs/ponder/local/lib/python2.7/site-packages/ponder-0.0.40-py2.7.egg/ponder/server/__init__.py", line 10, in <module>
    from ponder.server.views import Endpoints, route
ImportError: No module named views

이 잘 파이썬 REPL에서 작동합니다.

% python
Python 2.7.5+ (default, Feb 27 2014, 19:37:08) 
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from ponder.server.views import Endpoints, route
>>> 

및 명령 줄에서 가져 오기 :

% python -c "from ponder.server.views import Endpoints, route"

요약 트리 출력은 내가 작업하고있는 것을 보여줍니다 :

% tree
├── __init__.py
├── ponder
│   ├── __init__.py
│   ├── server
│   │   ├── __init__.py
│   │   └── views
│   │       ├── environment_templates.py
│   │       ├── groups.py
│   │       ├── __init__.py
│   │       ├── instances.py
│   │       ├── tasks.py
│   │       └── users.py

내 PYTHONPATH가이 트리의 루트로 설정됩니다.

% echo $PYTHONPATH
/home/hughdbrown/workspace/ept/ponder/lib

나는 python 2.7을 사용하는 virtualenv에서 이것을 실행하고있다. 나는 오늘이 일을 계속하고 있었지만 문제가 어디인지는 알 수 없다. 우선, __init__.py는 직전에 가져온 일부 수입품으로 괜찮은 것 같습니다 :

from .database import get_db
from .config import parser
from .views import Endpoints, route

(나는 마지막 줄을 절대적인 수입으로 바꿨다. 운이 없다.)

내가 시도한 것들 :

이 오류를 디버깅하는 방법에 대한 제안 사항은 공개되어 있습니다.

그래서 내가 한 실수는 소스 트리를 보는 것뿐이었습니다. 문제는 실제로 내 가상 환경에서 런타임 환경에있었습니다. 그리고 거기를 보았을 때 원하는 파일이 설치되지 않은 것을 발견했습니다. 문제는 루트에서 setup.py입니다.

해결법

  1. ==============================

    1.필자의 일반적인 트릭은 가져 오기 문제가 발생하는 실제 컨텍스트에서 sys.path를 단순히 인쇄하는 것입니다. 귀하의 경우에는 인쇄 장소가 /home/hughdbrown/.local/bin/pserve에있는 것처럼 보일 수 있습니다. 그런 다음 경로가 보여주는 장소에서 dirs & 파일을 확인하십시오.

    필자의 일반적인 트릭은 가져 오기 문제가 발생하는 실제 컨텍스트에서 sys.path를 단순히 인쇄하는 것입니다. 귀하의 경우에는 인쇄 장소가 /home/hughdbrown/.local/bin/pserve에있는 것처럼 보일 수 있습니다. 그런 다음 경로가 보여주는 장소에서 dirs & 파일을 확인하십시오.

    먼저 다음과 같이하면됩니다.

    import sys
    

    파이썬 2에서는 print 표현식을 사용합니다 :

    print sys.path
    

    또는 print 함수로 파이썬 3에서 :

    print(sys.path)
    
  2. ==============================

    2.나는 PYTHONPATH를 '.'로 설정했습니다. 그리고 그것은 나를 위해 그것을 해결했다.

    나는 PYTHONPATH를 '.'로 설정했습니다. 그리고 그것은 나를 위해 그것을 해결했다.

    export PYTHONPATH='.'
    

    한 - 라이너의 경우 다음과 같이 쉽게 할 수 있습니다.

    PYTHONPATH='.' your_python_script
    

    이러한 명령은 터미널에서 실행될 것으로 예상됩니다.

  3. ==============================

    3.나는 같은 문제가 있었고 파이썬 파일의 맨 위에 다음 코드를 추가하여 해결했습니다 :

    나는 같은 문제가 있었고 파이썬 파일의 맨 위에 다음 코드를 추가하여 해결했습니다 :

    import sys
    import os
    
    sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
    

    os.path.dirname의 반복 횟수는 프로젝트 계층 구조에있는 파일의 위치에 따라 다릅니다. 예를 들어, 제 경우에는 프로젝트 루트가 세 단계 위로 올라갑니다.

  4. ==============================

    4.나는 같은 문제를 만났고 오류 줄 앞에 pdb.set_trace ()를 시도했다.

    나는 같은 문제를 만났고 오류 줄 앞에 pdb.set_trace ()를 시도했다.

    내 문제는 패키지 이름이 모듈 이름과 중복된다는 것이다 :

    test
    ├── __init__.py
    ├── a
    │   ├── __init__.py
    │   └── test.py
    └── b
        └── __init__.py
    

    파일 a / __ init__.py에서 test.b import xxx를 사용하면 ImportError가 발생합니다 : b라는 모듈이 없습니다.

  5. ==============================

    5.파이썬 스크립트를 실행하는 몇 가지 방법이 있습니다 :

    파이썬 스크립트를 실행하는 몇 가지 방법이 있습니다 :

    이러한 각각의 방법은 다른 버전의 python (¤)을 실행할 수 있습니다.

    cmd에 의해 실행되는 python 버전 확인 : cmd를 입력하십시오.

    python --version 
    

    .py를 클릭하면 실행되는 python 버전을 확인하십시오.

    옵션 1:

    다음을 포함하는 test.py를 만듭니다.

    import sys print (sys.version)
    input("exit")
    

    옵션 2 :

    cmd를 입력하십시오.

    assoc .py
    ftype Python.File
    

    경로를 확인하고 모듈 (예 : win32clipboard)이 cmd :

    다음을 포함하는 test.py를 만듭니다.

    python
    import sys
    sys.executable
    sys.path
    import win32clipboard
    win32clipboard.__file__
    

    경로를 확인하고 모듈이 .py로 인식되는지 확인하십시오.

    다음을 포함하는 test.py를 만듭니다.

    import sys
    print(sys.executable)
    print(sys.path)
    import win32clipboard
    print(win32clipboard.__file__)
    

    cmd의 버전이 .py가 아닌 ok이면 .py와 관련된 기본 프로그램이 올바르지 않기 때문입니다. .py에 대한 python 버전 변경

    cmd와 관련된 python 버전을 변경하려면 :

    제어판 \ 모든 제어판 항목 \ 시스템 \ 고급 시스템 설정 \ Environnement 변수 SYSTEM 변수에서 경로 변수를 파이썬 버전으로 설정합니다 (예 : cmd는 첫 번째 경로를 사용합니다 : 예 : C : \ 경로 \를 \ Python27, C : 경로 \를 \ Python35 → cmd는 python27을 사용합니다)

    .py 확장자와 연관된 python 버전을 변경하려면,

    cmd를 admin으로 실행하십시오.

    쓰기 : ftype Python.File = "C : \ Python35 \ python.exe" "% 1"% * 마지막 파이썬 버전을 설정합니다 (예 : python3.6). 최종 버전이 3.6이지만 3.5를 원한다면 폴더 (xxxpython36)에 xxx를 추가하십시오. 그러면 마지막으로 인식 된 버전 인 python3.5 (cmd를 제거한 후 xxx)가됩니다.

    다른:

    "모듈 오류가 없습니다."또한 구문 오류 btw python et 3에서 올 수 있습니다 (예 : 인쇄 기능에 괄호가 누락되었습니다 ...).

    ¤ 따라서 그들 각각은 자신의 핍 버전

  6. ==============================

    6.나도이 문제를 겪었고, 나는 프로그램을 실행하기 전에 터미널에 myproject라는 작업을 입력하는 것을 잊어 버렸다.

    나도이 문제를 겪었고, 나는 프로그램을 실행하기 전에 터미널에 myproject라는 작업을 입력하는 것을 잊어 버렸다.

  7. ==============================

    7.나는 같은 문제가 있었다. 다른 python 버전에서 명령을 실행하여 문제를 해결했습니다. python3 filename.py 시도했습니다. 이전에는 Python 2.7을 사용하고있었습니다.

    나는 같은 문제가 있었다. 다른 python 버전에서 명령을 실행하여 문제를 해결했습니다. python3 filename.py 시도했습니다. 이전에는 Python 2.7을 사용하고있었습니다.

    또 다른 가능성은 파일을 가져 오는 데 BOM (Byte Order Mark)이 포함될 수 있다는 것입니다. VSCode (Notepad ++)와 같은 다중 인코딩을 지원하고 ANSI, UTF-8 (BOM이없는)과 같은 다른 인코딩 상태로 저장하는 일부 편집기에서 파일을 열면 해결할 수 있습니다.

  8. ==============================

    8.이게 누구에게나 흥미 롭다면 Cygwin에서 파이썬을 돌릴 때도 똑같은 문제가있었습니다. 제 경우에는 팬더가 설치되지 않았다고해도 괜찮습니다. 문제는 내가 Python을 2 번 설치했다는 것인데, 하나는 Windows에, 다른 하나는 cygwin 설치 프로그램을 사용하는 것이다. 둘 다 Python과 동일한 버전 이었지만 Cygwin 설치는 팬더가 설치된 위치에 대해 혼란 스러웠다. cygwin의 Python을 제거하고 Windows 설치시 Cygwin을 지적했을 때 모든 것이 잘되었습니다.

    이게 누구에게나 흥미 롭다면 Cygwin에서 파이썬을 돌릴 때도 똑같은 문제가있었습니다. 제 경우에는 팬더가 설치되지 않았다고해도 괜찮습니다. 문제는 내가 Python을 2 번 설치했다는 것인데, 하나는 Windows에, 다른 하나는 cygwin 설치 프로그램을 사용하는 것이다. 둘 다 Python과 동일한 버전 이었지만 Cygwin 설치는 팬더가 설치된 위치에 대해 혼란 스러웠다. cygwin의 Python을 제거하고 Windows 설치시 Cygwin을 지적했을 때 모든 것이 잘되었습니다.

  9. ==============================

    9.모듈과 같은 이름의 스크립트가 다른 디렉토리에 있으면 대신 그 스크립트가 사용됩니다. 예 :

    모듈과 같은 이름의 스크립트가 다른 디렉토리에 있으면 대신 그 스크립트가 사용됩니다. 예 :

    module.py
    
    module
    |
    |--module
    |  |
    |  |--__init__.py
    |  |--module.py
    

    이렇게하면 두 번째 모듈이 아닌 첫 번째 module.py가 사용됩니다.

  10. from https://stackoverflow.com/questions/23417941/import-error-no-module-named-does-exist by cc-by-sa and MIT license