다른 .py에 있는 모듈을 import 하고자 하는데 안됩니다.
조회수 1118회
제가 몇일동안 찾아보고 해결해보려 했지만 어떻게 해결해야 하는지를 찾을 수가 없었습니다. 뭐가 문제인지도 잘 몰라서 어떻게 질문을 해야할 지 잘 모르겠지만 최대한 써보았습니다. 긴 글 잠시나마 읽어주시면 감사하겠습니다!
질문1.
아래 run.py
를 실행시 나타나는 에러 메시지 중 No module named 'db'
가 나옵니다.
__init__.py
로 가보았을때 에러가 나타난 부분이 from db import Database
입니다.
db.py
라는 파일이있는데, 이 파일이 왜 import
가 안되는 것인지 모르겠습니다.
또한 문제가 있다면 어떻게 해결해야 하는지 모르겠습니다.
질문2.
db.py
이외에 root.py
, util.py
등 다른 .py
파일에 있는 함수들도 불러오고자 하는데 불러와지지가 않습니다.
사용 설명에는
TODO: Move from modules to blueprints, see http://flask.pocoo.org/docs/blueprints/
라고 나와있는데, Blueprint
가 아니더라도 .py
파일을 불러 올 수 있지 않나 하고있습니다.
이하는 코드와 에러메시지 입니다.
run.py
import logging
import os
from flask import Flask
from PlacePulse import app, buildIndices, initDB
if __name__ == '__main__':
port = int(os.environ.get("PORT", 8000))
app.logger.setLevel(logging.DEBUG)
app.config.update(DEBUG=True,PROPAGATE_EXCEPTIONS=True)
app.run(debug=True,host='0.0.0.0',port=port)
실행 시 에러메시지
Traceback (most recent call last):
File "D:/fresh/바탕화면/연구폴더/Place-Pulse/run_placepulse.py", line 8, in <module>
from PlacePulse import app, buildIndices, initDB
File "D:\fresh\바탕화면\연구폴더\Place-Pulse\PlacePulse\__init__.py", line 7, in <module>
from db import Database
ModuleNotFoundError: No module named 'db'
실행 시 에러메시지가 위와 같이 나욌습니다. 이 에러를 해결하기 위해서
__init__.py
로 가보았습니다.
__init__.py
from flask import Flask, redirect, request, Blueprint, render_template
app = Flask(__name__)
import os
import logging
import re
import pymongo
from db import Database
from util import *
from random import random
from trueskill import trueskill
import json
import time
import tornado.ioloop
import numpy as np
from root import root
from admin import admin
from login import login
from matching import matching
from results import results
from study import study
app.register_module(root)
app.register_module(admin)
app.register_module(login)
app.register_module(matching)
app.register_module(results)
app.register_module(study)
app.secret_key = "a10ad1a40b754a4d9b663fac60556a78"
@app.route("/")
def main():
studyObj = Database.getRandomStudy()
if studyObj is None:
return "Uh oh.. no study found in database."
votesCount = Database.getVotesCount()
return auto_template('main.html',study_id=studyObj.get('_id'),study_prompt=studyObj.get('study_question'), votes_contributed=votesCount, votes_for_study=studyObj['num_votes'])
## 이하 생략...
__init__.py
코드를 실행시켜 본 결과 에러가 아래와 같이 나왔습니다.
Traceback (most recent call last):
File "D:/fresh/바탕화면/연구폴더/Place-Pulse/PlacePulse/__init__.py", line 8, in <module>
from util import *
File "D:\fresh\바탕화면\연구폴더\Place-Pulse\PlacePulse\util.py", line 3, in <module>
from PlacePulse import app
File "D:\fresh\바탕화면\연구폴더\Place-Pulse\PlacePulse\__init__.py", line 27, in <module>
from root import root
File "D:\fresh\바탕화면\연구폴더\Place-Pulse\PlacePulse\root.py", line 1, in <module>
from flask import Module
ImportError: cannot import name 'Module' from 'flask' (D:\fresh\바탕화면\연구폴더\Python\venv\lib\site-packages\flask\__init__.py)
db.py
import os
import pymongo
import random
import sys
from uuid import uuid4
from bson.objectid import ObjectId
from pymongo import ASCENDING
import math
from random import choice
from random import randint
from trueskill import trueskill
import numpy.random as rnd
class database(object):
studs = None
locs = None
biased_studs = None
study2activeLocID = None
def getResultsForStudy(self,studyID):
# FIXME: Normalize use of ObjectId/str for _id's.
return self.results.find_one({
"$or":[
{'study_id': studyID},
{'study_id': ObjectId(studyID)}
]
})
def getAllStudies(self):
return self.studies.find()
## 이하 생략....
어떻게 질문해야 할지 몰라 너무 중구난방 글을 두서없이 썻네요. 긴 글 읽어주셔서 감사합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력