development

PyDev“가져 오기에서 정의되지 않은 변수”오류를 어떻게 해결합니까?

big-blog 2020. 6. 27. 10:08
반응형

PyDev“가져 오기에서 정의되지 않은 변수”오류를 어떻게 해결합니까?


Eclipse에서 PyDev를 사용하는 Python 프로젝트가 있으며 PyDev는 내 코드에 계속 잘못된 오류를 생성합니다. 객체 settings를 정의 하는 모듈 settings있습니다. 모듈에서 가져 와서 다음을 사용 b하여 속성을 할당합니다.

from settings import settings
settings.main = object()

내 코드 중 일부에서는 다음과 같은 문장이 있습니다.

from settings import settings
print settings.main 

... 코드가 문제없이 실행 되더라도 Eclipse 코드 오류 분할 창에서 "import : main에서 정의되지 않은 변수"메시지를 생성하십시오. 이 문제를 어떻게 해결할 수 있습니까?


프로젝트의 코드의 유일한 방법은 if False실행되지 않도록 보호 될 가능성이 있다고 선언하는 선언을 추가하는 것입니다 (정적 코드 분석은 런타임 정보가 아닌 보이는 정보 만 볼 수 있음). 해당 모듈을 직접 열면 main이 예상되었다는 표시가 없습니다).

이를 극복하기 위해 몇 가지 선택이 있습니다.

  1. 외부 모듈 인 경우 forced builtinsPyDev가 런타임 정보를 얻기 위해 쉘을 생성하도록 추가 할 수 있습니다 (자세한 내용은 http://pydev.org/manual_101_interpreter.html 참조). 모듈을 쉘로 가져오고 모듈에서 찾은 클래스 dir(module)dir클래스를 수행하여 완료를 제시하고 코드를 분석하십시오.

  2. 오류가있는 줄에 Ctrl + 1 (Mac의 경우 Cmd + 1)을 사용할 수 있으며 PyDev는 해당 오류를 무시하기 위해 주석을 추가하는 옵션을 제공합니다.

  3. stub모듈 을 만들어 predefined완성에 추가 할 수 있습니다 ( http://pydev.org/manual_101_interpreter.html 에도 자세한 내용이 있음).


바이너리 등에 의존하는 opencv를 사용하고 있으므로 다른 모든 줄 에이 바보 같은 오류가있는 스크립트가 있습니다. 파이썬은 동적 인 언어이므로 그러한 경우를 오류로 간주해서는 안됩니다.

다음으로 이동하여 이러한 오류를 모두 제거했습니다.

창-> 환경 설정-> PyDev-> 편집기-> 코드 분석-> 정의되지 않음-> 가져 오기에서 정의되지 않은 변수-> 무시

그게 다야.

창-> 환경 설정-> PyDev-> 편집기-> 코드 분석-> 가져 오기-> 가져 오기를 찾을 수 없음-> 무시


답변으로 표시된 게시물은 해결책이 아니라 해결 방법을 제공합니다.

이 솔루션은 저에게 효과적입니다.

  • 이동 Window - Preferences - PyDev - Interpreters - Python Interpreter
  • Forced builtins탭으로 이동
  • 클릭 New...
  • 모듈 이름을 입력하고 ( multiprocessing필자의 경우)OK

오류 메시지가 사라질뿐만 아니라 모듈 멤버도 인식됩니다.


Eclipse / PyDev 프로젝트에서 비슷한 문제가 발생했습니다. 이 프로젝트에서 파이썬 코드의 루트 디렉토리는 프로젝트의 하위 디렉토리였습니다.

--> MyProject
 + --> src         Root of python code
   + --> module1     A module 
   + --> module2     Another module
 + --> docs
 + --> test

프로젝트가 디버깅되거나 실행될 때 작업 디렉토리가 올바른 위치로 설정되어 모든 것이 정상이었습니다. 그러나 PyDev 코드 분석에서 module1 또는 module2에서 가져 오기를 찾지 못했습니다.

해결책은 프로젝트 속성-> PyDev-PYTHONPATH 섹션을 편집하고 소스 폴더 탭에서 / MyProject를 제거하고 대신 / MyProject / src를 추가하는 것입니다.


이것은 나를 위해 일했다 :

1 단계) 인터프리터를 제거하고 자동으로 다시 구성

2 단계) 창-환경 설정-PyDev-통역사-Python 통역사 강제 내장 탭으로 이동 새로 만들기를 클릭하십시오 ... 모듈의 이름 (제 경우에는 저주)을 입력하고 확인을 클릭하십시오

단계 3) 오류가 발생한 모듈에서 프로젝트 탐색기를 마우스 오른쪽 버튼으로 클릭하십시오. PyDev-> 코드 분석으로 이동하십시오.


나는 같은 문제가 있었다. Windows에서 Python 및 Eclipse를 사용하고 있습니다. 코드는 정상적으로 실행되었지만 일식은 어디에서나 오류를 보여줍니다. 폴더 'Lib'의 이름을 'lib'(C : \ Python27 \ lib)로 변경 한 후 문제가 해결되었습니다. 문자의 대문자가 구성 파일의 대문자와 일치하지 않으면 때때로 문제가 발생할 수 있습니다 (그러나 항상 문제는 아닌 것 같습니다. 오류 검사가 갑자기 명백해지기 전에 오랫동안 오류 검사가 좋았 기 때문입니다) 이유).


내가하고있는 것에 대한 근사치 :

import module.submodule

class MyClass:
    constant = submodule.constant

pylint가 말한 내용 : E: 4,15: Undefined variable 'submodule' (undefined-variable)

가져 오기를 다음과 같이 변경하여이 문제를 해결했습니다.

from module.submodule import CONSTANT

class MyClass:
    constant = CONSTANT

참고 : 또한 가져온 변수로 이름을 변경하여 상수 특성을 반영하는 대문자 이름을 갖습니다.


It is possible you just need to re-configure your python path within Eclipse. See my answer to a similar question.


in preferences --> PyDev --> PyLint under arguments to pass to PyLint add this line:

--generated-members=objects

you will need to do this for each generated . I found this by googling, but I lost the reference.


Right click in the project explorer on whichever module is giving errors. Go to PyDev->Remove Error Markers.


My answer doesn't contribute anything new, just a concrete example I encountered.

import gtk.gdk

w = gtk.gdk.get_default_root_window()

PyDev showed the error message "Undefined variable from import: get_default_root_window()"

In the python shell you can see that this is a 'built-in' module as mentioned in a answer above:

>>> import gtk.gdk
>>> gtk.gdk
<module 'gtk.gdk' (built-in)>

Now under Window->Preferences->PyDev->Interpreters->Python Interpreter, I selected the tab 'Forced Builtins' and added 'gtk.gdk' to the list.

Now the error message didn't show anymore.


I find that these 2 steps work for me all the time:

  1. Confirm (else add) the parent folder of the module to the PYTHONPATH.
  2. Add FULL name of the module to forced builtins.

The things to note here:

  • Some popular modules install with some parent and child pair having the same name. In these cases you also have to add that parent to PYTHONPATH, in addition to its grandparent folder, which you already confirmed/added for everything else.

  • Use (for example) "google.appengine.api.memcache" when adding to forced builtins, NOT "memcache" only, where "google" in this example, is an immediate child of a folder defined in PYTHONPATH.

참고URL : https://stackoverflow.com/questions/2112715/how-do-i-fix-pydev-undefined-variable-from-import-errors

반응형