-
카테고리
-
세부 분야
풀스택
-
해결 여부
해결됨
모듈화 과정에서 pylint 오류가 잔뜩나면서.. 직접 임포트를 하더라도 해결이 안되던데 왜그럴까요?
22.04.10 19:45 작성 조회수 311
2
답변을 작성해보세요.
0
남박사
지식공유자2022.04.10
강좌를 어디까지 진행하셨는지 정확히 알 수 없지만, 일단 pylint 는 무시하셔야 할듯 합니다. lint 는 코딩에 도움을 주는 역할일 뿐이지 그 자체가 중요한 요소는 아닙니다.
그리고 __init__.py 에서 app 가 .common, .filter 뒤에 나오면 당연히 .common 이나 .filter 에서는 main 을 접근할 수 없습니다. import 순서도 중요합니다.
A 에 app 를 선언했는데 A 에 app 이전에 B 를 import 하면 B 에서는 자신이 import 된 이후에 app 가 선언되었으므로 당연이 A.app 를 인식할 수 없게 됩니다.
그리고 board 에는 from main import * 이것만 있으면 됩니다.
from flask import Flask
from flask import request
from flask import render_template
from flask_pymongo import PyMongo
from bson.objectid import ObjectId
from datetime import datetime, timedelta
from flask import abort
from flask import redirect
from flask import url_for
from flask import flash
from flask import session
import math
import time
app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://localhost:27017/myweb"
app.config["SECRET_KEY"] = "abcd"
app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(minutes=30)
mongo = PyMongo(app)
# 아래의 파일들에서 main 의 app 에 접근을 해야하니
# 아래 import 위에 app 가 선언되어야 합니다.
from .filter import format_datetime
from .common import login_required
# member, board 에서 login_required, format_datetime 을 사용하니까
# 당연히 member 와 board 가 위의 import 보다 먼저 나와선 안됩니다.
from . import member
from . import board
문신호
질문자2022.04.11
답변주신 내용확인해서 수정해서 적용해봤는데 오류가 나는부분은 사라지지 않아서 해결이 어렵네요..ㅠ
강좌진행중인 부분은 플라스크 프로젝트를 모듈화 하여 패키징 하기 부분입니다.
궁금사항은 이렇습니다..!
1. pylint 오류를 해결하는 방안은 있을까요?
2. 오류를 해결 안하고 진행하면 blueprint를 사용해서 라우팅하기가 진행이 될까요?
3. pylint 말고 다른 방법으로 모듈화 하는 방법은 있나요?
4. pylint는 그냥 1개로 사용하고 나머지 HTML부분만 모듈화가 가능할까요?
따라 하지않고 강좌시청은 부트스트랩까지 진행했습니다.
플라스크내 모듈화 한다음에는 run.py를 실행하면 오류가 이렇게 나와서 로컬서버가 열리지가 않네요..ㅠ
Traceback (most recent call last):
File "c:\Users\sosgx\Desktop\myweb_01\run.py", line 1, in <module>
from main import app
File "c:\Users\sosgx\Desktop\myweb_01\main\__init__.py", line 1, in <module>
from flask import Flask
ModuleNotFoundError: No module named 'flask'
모듈화를 안하고 진행해도 괜찮을까요?
남박사
지식공유자2022.04.12
1. pylint 오류를 해결하는 방안은 있을까요?
pylint 는 문법과 코딩 스타일을 체크만 해주는 프로그램이지 오류를 체크하는 프로그램은 아닙니다. 문법적 코딩 스타일에 대한 경고만 주지 실제 프로그램의 동작에는 영향을 주지 않습니다.
2. 오류를 해결 안하고 진행하면 blueprint를 사용해서 라우팅하기가 진행이 될까요?
강좌의 흐름은 순차적이기 때문에 해당 오류를 수정하지 않으면 뒤로갈수록 점점 더 복잡해지기만할 문제가 있을듯 합니다.
3. pylint 말고 다른 방법으로 모듈화 하는 방법은 있나요?
모듈화랑 pylint 는 아무런 관련이 없습니다. 다시 말씀드리지만 pylint 는 코딩 스타일을 도와주는 그냥 안내역할만 합니다.
4. pylint는 그냥 1개로 사용하고 나머지 HTML부분만 모듈화가 가능할까요?
pylint 를 1개로 한다는게 무슨 말씀이신지 모르겠습니다.
Traceback (most recent call last):
File "c:\Users\sosgx\Desktop\myweb_01\run.py", line 1, in <module>
from main import app
File "c:\Users\sosgx\Desktop\myweb_01\main\__init__.py", line 1, in <module>
from flask import Flask
ModuleNotFoundError: No module named 'flask'
올려주신 오류를 보면 갑자기 flask 자체를 찾지 못하는건 무슨 이유인가요? virtualenv 를 사용중이신건가요? 아니신건가요?
from flask import Flask는 모듈화가 되었던 안되었던 오류가 나서는 안되는 내용인듯 보입니다만....
https://open.kakao.com/o/svwMTm1d
시간되실때 카톡으로 문의한번 주셔보세요
문신호
질문자2022.04.12
4번은 pylint를 활용해서 py파일을 전부 모듈화로 변경했잖아요? html파일도 모듈화 하는 부분이 있어서요! run.py를 모듈화 하지 않고 html만 모듈화 해도 괜찮은지 물어본거였습니다!
다른부분은 해결되서 수업 진행하는데는 문제가 없습니다! 설명해주셔서 감사합니다!
위에 오류는 이렇습니다.
cmd에서 환경은 virtualenv 사용중인 (venv) C:\Users\sosgx\Desktop\myweb_01> 입니다.
여기서 python run.py을 하면 아래와 같은 오류가 나오더라구요.
(venv) C:\Users\sosgx\Desktop\myweb_01>python run.py
Traceback (most recent call last):
File "run.py", line 1, in <module>
from main import app
File "C:\Users\sosgx\Desktop\myweb_01\main\__init__.py", line 1, in <module>
from flask import Flask
ModuleNotFoundError: No module named 'flask'
라고 나오고 상당에 재생버튼 누르면 code넘어가면서 이렇게 나옵니다.
S C:\Users\sosgx\Desktop\myweb_01> python -u "c:\Users\sosgx\Desktop\myweb_01\run.py"
Traceback (most recent call last):
File "c:\Users\sosgx\Desktop\myweb_01\run.py", line 1, in <module>
from main import app
File "c:\Users\sosgx\Desktop\myweb_01\main\__init__.py", line 1, in <module>
from flask import Flask
ModuleNotFoundError: No module named 'flask'
PS C:\Users\sosgx\Desktop\myweb_01> & c:/Users/sosgx/Desktop/myweb_01/venv/Scripts/Activate.ps1
(venv) PS C:\Users\sosgx\Desktop\myweb_01>
여기서 다시 재생버튼 누르면 아래처럼 실행되면서 로컬서버가 동작합니다.
File "c:\Users\sosgx\Desktop\myweb_01\tempCodeRunnerFile.py", line 1, in <module>
from main import app
File "c:\Users\sosgx\Desktop\myweb_01\main\__init__.py", line 1, in <module>
from flask import Flask
ModuleNotFoundError: No module named 'flask'
PS C:\Users\sosgx\Desktop\myweb_01> & c:/Users/sosgx/Desktop/myweb_01/venv/Scripts/Activate.ps1
(venv) PS C:\Users\sosgx\Desktop\myweb_01> python -u "c:\Users\sosgx\Desktop\myweb_01\tempCodeRunnerFile.py"
* Serving Flask app 'main' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Restarting with stat
* Debugger is active!
* Debugger PIN: 133-167-640
* Running on all addresses.
WARNING: This is a development server. Do not use it in a production deployment.
* Running on http://192.168.0.34:9000/ (Press CTRL+C to quit)
이렇게 나오는 부분은 왜그런걸까요..?
남박사
지식공유자2022.04.12
"4번은 pylint를 활용해서 py파일을 전부 모듈화로 변경했잖아요? html파일도 모듈화 하는 부분이 있어서요! run.py를 모듈화 하지 않고 html만 모듈화 해도 괜찮은지 물어본거였습니다!"
다시 말씀드리지만 pylint 를 활용해서 모듈화한게 아닙니다. 모듈화랑 pylint 는 아무런 관련이 없습니다. pylint 는 그냥 코딩 도우미일뿐 안써도 코딩하는데 아무런 상관없는 겁니다.
그리고 모듈화는 개발자가 프로그램을 좀 더 구조화하여 객체지향적으로 코딩하는 방법의 하나일뿐 필수 요소는 아니나 강좌의 커리큘럼상 뒷 부분에 모듈화되어 진행하게 되는 부분이라 강좌의 진도를 따라가시려면 해야한다고 답변 드린 것 입니다.
그리고 추가로 질문하신 부분은 현재 프로젝트가 virtualenv 환경에서 라이브러리가 설치되어있고 현재 프로젝트 폴더에 venv 폴더가 존재하므로 비주얼스튜디오 코드가 해당 폴더를 자동 인식하여 인터프리터를 가상환경으로 설정했기 때문입니다. 가상환경 virtualenv 에 대해 꼭 이해하고 넘어가시기 바랍니다.
문신호
질문자2022.04.12
답변 감사드립니다.
지금 진도는 나가고 있고 아직은 오류가 없어서 질문이 생기면 다시 말씀드리겠습니다~!
한번 완강하고 다시 복습을 해봐야겠네요 ㅎㅎ
답변 1