일반오류
ValueError: check_hostname requires server_hostname
vpn을 껐다
missing 1 required positional argument: 'self'
클래스는 인스턴스화하지 않고 그 방법을 호출하였다.
xxx is not a package
import 에러 xxx is not a package
import의 폴더를 Python package로 바꾸기
폴더 아래에 __init__.py 파일을 추가하면 됩니다
libpng warning: iCCP: cHRM chunk does not match sRGB
QQ 입력 방법을 사용하지 마십시오.
check_hostname requires server_hostname
저는 win10에서 만났으니, 에이전트를 끄면 됩니다
python 설치 서드파티 라이브러리, 오버타임 오류 - Read timed out.
socket.timeout: The read operation timed out
해결 방법, 시간 초과 pip --default-timeout=100 install-U Pillow 설정
ModuleNotFoundError: No module named xxxx
해당하는 가방을 찾아서 설치하시면 됩니다.
일부 패키지 이름은 제시된 이름과 다를 수 있습니다.
index 메서드ValueError: xx is not in list
하나의 list에 대해 index 메서드를 사용하면 검색 값이 존재하지 않을 때 이 오류가 보고됩니다.
try except를 사용하여 캡처하거나 if xxx in xx를 사용하여 특정 값이 있는지 여부를 판단하여 피할 수 있습니다.
setup.py을 실행하는 중 no commands supplied 오류 발생
제가 명령을 썼기 때문입니다.
python setup.py
실제 python setup.py install로 변경하시면 됩니다.
다른 py 파일을 인용하여 오류를 보고하다
폴더 이름 추가
from a import * -> from 폴더 이름.a import *
removedirs 오류: xxx 디렉터리가 비어 있지 않습니다
removedirs는 빈 디렉토리만 삭제할 수 있습니다
‘gbk‘ codec can‘t decode byte 0xa6 in position 4: illegal multibyte sequence
파일을 열 때 "'gbk' codec can't decode byte 0xa6 in position 4: illegal multibyte sequence" 오류가 발생하였습니다. 해결은 다음과 같습니다.
with open(path, 'rb'), 즉 텍스트를 읽을 때 매개변수 'b'를 넣습니다.
아니면 with open(path, 'r', encoding='utf-8')
shutil copyfile 할 때 permission denied
복사 경로 중 하나는 파일이고 폴더이기 때문에 문제가 발생했습니다.
삼원 연산자 오류 "Syntaxerror: can't assign to conditional expression"
a=1
b=1
x=1 if a==b else x=0
print(x)
File "test.py", line 3
x=a if a==b else x=0
^
SyntaxError: can't assign to conditional expression
삼목 연산에서 표현식은 왼쪽 값으로만 사용할 수 있다
고치다
a=1
b=1
x=1 if a==b else 0
print(x)
Object of type ’int64‘ is not JSON serializable
json이 디코딩할 수 있는 데이터 유형은 기본적으로 일반적인 int, float, str 유형이며 numpy.array의 데이터 유형은 numpy에 내장된 유형입니다. json.dumps는 지원되지 않으므로 데이터를 표준 유형으로 변환해야 합니다.
UnicodeDecodeError:“utf-8“
일반적으로 모두 중국어가 뒤섞여 있기 때문이다
1. 경로에 중국어가 있는지 확인
2. 또 한 가지 은밀한 점이 있는데, 바로 당신의 컴퓨터 이름이 중국어인지 아닌지 여부이다.
pyparsing
AttributeError: ‘version_info‘ object has no attribute ‘version‘
버전 문제는 pip install pyparsing==2.4.7로 해결하겠습니다
scipy
AttributeError: module 'scipy.misc' has no attribute 'imsave'
scipy.misc.imsave(save_path, img)
scipy 1.2 이상 버전에서는 사용할 수 없습니다.
imageio 설치 가능
그리고 imageio.imsave(save_path, img)로
numpy
AttributeError: 'numpy.ndarray' object has no attribute 'append'
배열이 append를 지원하지 않습니다.해결책은 list append로 배열을 다시 돌리는 것입니다.
ValueError: Object arrays cannot be loaded when allow_pickle=False
numpy 1.16.3 제거, numpy 1.16.2 설치
pip3 install numpy==1.16.2
아니면 np.load에 allow_pickle=True를 지정해서
pandas
pandas 오류 AttributeError: 'DataFrame' object has no attribute 'ix'
dataset.ix[i, 0] 메서드가 제거되었습니다.
일록으로도 할 수 있고
dataset.iloc[i,0]
pd.DataFrame 오류:ValueError:arrays must all be same length
DataFrame(dict)을 사용하여 dict로 DataFrame을 구성하면 key는 열 column이 되고 (list-like) values는 행 row가 되며 각 values의 list 길이가 일치하지 않으면 이 오류가 발생합니다.
해결 방법: df = pd.DataFrame.from_dict(d, orient='index') #d는 빌드할 dict입니다.
최종 결과: 행 수는 key 값, 열 수는 가장 긴 values의 길이, 다른 더 짧은 values는 None으로 채워집니다
nltk
Resource stopwords not found.
nltk 라이브러리가 설치되어 있어야 함
cmd를 켜서 python 환경에 들어가거나 다른 방식으로 python 환경에 들어가거나
import nltk
nltk.download('stopwords')
opencv
error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
인터넷에 여러 가지 이유가 있어서 제가 직접 try except를 넣어서 해결했습니다
if frame is not None:
try:
cv2.imshow(window_name, frame)
p.send(frame)
except:
pass
error: (-2) could not find a writer for the specified extension in function cv::imwrite_
내가 잘못 신고한 이유는 imwrite에 사진 이름에 확장자를 넣지 않았기 때문입니다.
opencv-python은 비디오 라이터로 동영상을 몇 KB만 저장한다.
내가 문제를 겪는 이유는 이미지 프레임의 크기가 videowriter에서 파라미터 size로 설정된 크기와 일치하지 않기 때문입니다.
Unsupported depth of input image
opencv에서 그림을 읽거나 액세스할 때 배열의 유형이 opencv에서 지원하는 형식이 아닙니다.
OpenCV의 원시 데이터 유형에는 unsigned char, bool, signed char, unsigned short, signed short, int, float, double 및 이러한 기본 유형으로 구성된 메타 그룹이 포함되며 이러한 메타 그룹의 모든 값은 동일한 유형에 속합니다.
opencvimshow 함수는 그림을 보여줍니다. 창이 돌고 있고 항상 회색 그림입니다.
imshow 이후에 cv2.waitKey (0)가 있어야 합니다.
sklearn
로지스틱 회귀 분석 오류: STOP: TOTAL NO. of ITERATIONS REACHED LIMIT를 사용합니다.
반복 횟수(최대값)를 늘리거나 데이터를 확대하면 됩니다.
예를 들어 반복 횟수를 늘리는 것
model = LogisticRegression(max_iter=3000)
기타
AssertionError:
Found no NVIDIA driver on your system. Please check that you
have an NVIDIA GPU and installed a driver from
Download Drivers | NVIDIA
엔비디아의 GPU가 필요합니다
sqlite3에서 지정한 모듈을 찾을 수 없음
File "E:\Anaconda3\envs\NLR\lib\site-packages\nltk\corpus\__init__.py", line 66, in <module> from nltk.corpus.reader import * File "E:\Anaconda3\envs\NLR\lib\site-packages\nltk\corpus\reader\__init__.py", line 105, in <module> from nltk.corpus.reader.panlex_lite import * File "E:\Anaconda3\envs\NLR\lib\site-packages\nltk\corpus\reader\panlex_lite.py', line 15, in <module> import sqlite3 File "E:\Anaconda3\envs\NLR\lib\sqlite3\__init_.py", line 23, in <module> from sqlite3.dbapi2 import * File "E:\Anaconda3\envs\envs\NLR\lib\sqlite3\dbapi2.py", line 27, in <module>
python 환경의 DLLs 폴더에 sqlite3.dll 복사
multiprocessing과 threading 글로벌 변수 공유 문제
다음 코드의 경우 멀티프로세싱은 멀티프로세스이기 때문에 프로세스 간에 글로벌 변수를 공유할 수 없지만, threading은 멀티스레드이기 때문에 threading으로 하면 됩니다.
멀티프로세싱은 파이프라인 방식으로 전송할 수 있습니다.
글로벌 변수를 사용하기 전에 global을 사용하여 선언해야 합니다
from threading import Thread,Lock
global_num = 0
def func1():
global global_num
for i in range(1000000):
lock.acquire()# 두 개의 스레드가 처음에 이 잠금을 뺏고, 잠금을 받으면 잠금이 되고, 이후의 프로그램을 실행하고, 다른 스레드 실행은 감청상태입니다. 이 스레드가 잠금이 풀릴 때까지 기다렸다가 잠금이 잠깁니다.
global_num += 1
lock.release()
print('---------func1:global_num=%s--------'%global_num)
def func2():
global global_num
for i in range(1000000):
lock.acquire()
global_num += 1
lock.release()
print('--------fun2:global_num=%s'%global_num)
print('global_num=%s'%global_num)
lock = Lock()
t1 = Thread(target=func1)
t1.start()
t2 = Thread(target=func2)
t2.start()
pymysql로 데이터베이스를 조작하여 데이터를 삽입하였으나, 데이터베이스 안에 데이터가 없는 문제가 있었다.
excute의 그 한 줄의 어구를 실행한 후에, commit 어구가 있어야 한다.
예를 들어
......
cur.execute(xxxx)
cur.connection.commit()
......
Tkinter 버튼을 누르지 않았는데도 command에 정의된 함수 실행
tkinter는 버튼(또는 다른 플러그인)에 의해 트리거된 컨트롤러 함수에 인자를 포함할 수 없습니다.
즉 command=fun이지 command=fun(a)이 아닙니다.
함수에 매개변수를 전달하려면 함수 앞에 람다를 추가해야 합니다.
command = lambda: fun(a)
Flask
app = Flask(__name__)
이 __name_의 값은 '__main_'입니다.
pycharm 디버깅 모드에서 오류 보고됨NoneType object is not iterable
pycharm 작동 모드에서 오류 보고 안 함
바꾸다
app = Flask ('프로젝트 루트 이름')
원인이 분명하지 않다.
Windows 환경에서 pycocotools 설치 오류 보고
visual c++ 환경이 필요하며 설치 후 pip install pycocotools 하면 됩니다
'개발 꿀팁 > PYTHON' 카테고리의 다른 글
파이썬의 다양한 방법 목록 - 이미지 처리 (0) | 2022.11.24 |
---|---|
파이썬의 기초 지식 (1) | 2022.11.24 |
파이썬의 다양한 방법 목록 (0) | 2022.11.24 |
파이썬 유도식 (0) | 2022.11.23 |
로지스틱 회귀 3부작 - 로지스틱 회귀(logistics regression) 원리 - 로지스틱 회귀를 완전히 읽을 수 있게 해준다 (0) | 2022.11.23 |