【Python】 파이썬 주요 트러블슈팅 [41-60]
파이썬 주요 트러블슈팅 [41-60]
추천글 : 【Python】 파이썬 목차
41. ImportError: cannot import name 'mnist.data_utils'
⑴ (grammar) 문제 상황
from mnist.data_utils import load_data
...
MNIST_data = h5py.File("mnist/MNISTdata.hdf5", 'r')
⑵ (grammar) 해결책 1. MNIST 데이터를 다운받은 뒤 다음과 같이 코드를 실행
MNIST_data = h5py.File("./MNISTdata.hdf5", 'r')
X_train = np.float32(MNIST_data['x_train'][:])
y_train = np.int32(np.array(MNIST_data['y_train'][:, 0])).reshape(-1, 1)
X_test = np.float32(MNIST_data['x_test'][:])
y_test = np.int32(np.array(MNIST_data['y_test'][:, 0])).reshape(-1, 1)
MNIST_data.close()
⑶ (grammar) 해결책 2. tensorflow.keras.datasets.mnist.load_data()를 활용
import tensorflow as tf
(Xtr, Ytr), (Xte, Yte) = tf.keras.datasets.mnist.load_data()
42. TypeError: can't multiply sequence by non-int of type 'float'
⑴ (grammar) 원인 1. 정수만 곱할 수 있는 상황에서 실수값을 곱한 경우 (ref)
### case 1. (Good)
names = ("John ", "Jane ")
print(names * 2)
# ('John ', 'Jane ', 'John ', 'Jane ')
### case 2. (Bad)
names = ("John ", "Jane ")
print(names * 2.0)
# TypeError: can't multiply sequence by non-int of type 'float'
### case 3. (Good)
names = ("John ", "Jane ")
print(names * int(2.0))
# ('John ', 'Jane ', 'John ', 'Jane ')
⑵ (grammar) 원인 2. Space Ranger가 업데이트 됨에 따라 tissue_positions_list.csv 대신 tissue_positions.csv가 생성되고, 부적절한 헤더가 생겨서 (아래 참고), 아직 이를 반영하지 않은 채 scanpy.read_visium를 한 AnnData를 scanpy.pl.spatial로 볼 때 에러가 생김
# tissue_positions_list.csv (Previous)
ACGCCTGACACGCGCT-1,1,0,0,256,1780
TACCGATCCAACACTT-1,1,1,1,268,1760
...
# tissue_positions.csv (Newest)
barcode,in_tissue,array_row,array_col,pxl_row_in_fullres,pxl_col_in_fullres
ACGCCTGACACGCGCT-1,1,0,0,256,1780
TACCGATCCAACACTT-1,1,1,1,268,1760
① (grammar) 해결방법 : tissue_positions.csv를 tissue_positions_list.csv로 이름을 바꾸고, 예전 버전처럼 헤더를 지워주어야 함
43. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xdf in position 991: invalid continuation byte
⑴ (grammar) 문제점 발생 : data = pandas.read_csv('example.csv', index_col=0)
① 이때 α, β 같은 문자가 .csv 파일 안에 있어서 문제가 생겼던 것으로 추정하고 있음
⑵ (grammar) 해결책 : data = pandas.read_csv('example.csv', index_col=0, encoding='ISO-8859-1')
⑶ 레퍼런스
44. Server Connection Error: A connection to the Jupyter server could not be established. JupyterLab will continue trying to reconnect. Check your network connection or Jupyter server configuration.
⑴ (system) 문제점 : jupyter lab, jupyter notebook 모두에서 같은 문제가 발생함
⑵ (others) 해결책 1. broken pipe 문제일 수도 있고, 이 경우 다음과 같이 해결
① broken pipe는 국가 보안정책상 네트워크 체계가 당연히 갖춰야 함
② VPN 등으로 사용자에게 broken pipe 문제가 일어나지 않도록 할 수 있음
⑶ (others) 해결책 2. 실행이 오래 걸리는 경우 오랫동안 클라이언트가 서버에 응답하지 않아 서버에서 connection을 일부러 끊는 경우가 있음. 이 경우 jupyter notebook / jupyter lab을 생성한 anaconda prompt 혹은 terminal에 주기적으로 엔터(Enter)를 쳐 주어 클라이언트의 무응답 문제 및 connection error를 해결할 수 있음
45. No module named 'google.protobuf'
⑴ (system) 해결책 : conda install protobuf
46. error: OpenCV(4.6.0) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
⑴ (grammar) opencv로 파일을 읽을 적에 이미지 파일이 존재하지 않는 경우
47. RuntimeError: CUDA error: out of memory
⑴ (system) 원인 : GPU usage가 한도를 넘어간 경우
⑵ (system) 해결방법 : python app.py와 같은 명령어를 다음과 같이 변경
① 의미 : 다른 테스크가 0번 GPU을 쓰고 있는 경우, 이번 테스크에 1번 GPU를 사용하겠다고 별도로 명시
CUDA_VISIBLE_DEVICES=1 python app.py
48. RuntimeError: CUDA error: no kernel image is available for execution on the device
⑴ (package) 원인 : torch 및 torchvision의 버전이 시스템 (e.g., 서버, 워크스테이션) 조건과 안 맞는 경우
① 가령, RTX3090은 CUDA11 이상을 사용하여야 함
② 관련 오류 메시지 : The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70. If you want to use the NVIDIA GeForce RTX 3090 GPU with PyTorch, please check the instruction.
⑵ (package) 해결방법 : 단순히 pip install torch, pip install torchvision이 아니라 다음과 같이 설치하여야 함 (ref.)
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 -f https://download.pytorch.org/whl/torch_stable.html
49. ImportError: cannot import name 'ctx' from 'dash'
⑴ (package) 해결방법 : dash package의 버전을 2.3.1에서 2.9.3으로 업그레이드 (필자 기준)
50. AttributeError: 'Flask' object has no attribute 'before_first_request'
⑴ (package) 해결방법 : dash package의 버전을 2.3.1에서 2.9.3으로 업그레이드 (필자 기준)
51. ImportError: cannot import name 'cached_property' from 'werkzeug'
⑴ (package) 해결책 : Werkzeug >= 1.0 버전을 down-grade
pip uninstall Werkzeug
pip install Werkzeug==0.16.0
⑵ 레퍼런스
52. TypeError: expected str, bytes or os.PathLike object, not numpy.ndarray
⑴ (grammar) 문제 상황 : gseapy.enrichr를 쓰는 상황에 ar = array(['RBMS3', 'PDE5A', dtype=object)를 gene_list 자리의 입력으로 넣어주었을 때 문제가 발생함
⑵ (grammar) 원인 : numpy.ndarray 자료형을 입력으로 넣을 게 아니라 list 자료형으로 넣어야 함
⑶ (grammar) 해결방법 : numpy.ndarray.tolist(ar) 또는 ar.tolist()를 입력으로 넣어주어야 함
53. OSError: wkhtmltopdf exited with non-zero code 1. error: qt.qpa.screen: QXcbConnection: Could not connect to display Could not connect to any X display.
⑴ (grammar) 문제 상황
pdfkit.from_string(output_text, 'pdf_generated.pdf', configuration=config)
⑵ (grammar) 해결방법
# newly added
from pyvirtualdisplay import Display
display = Display()
display.start()
# previous
pdfkit.from_string(output_text, 'pdf_generated.pdf', configuration=config)
# newly added
display.stop()
⑶ 레퍼런스
54. FileNotFoundError: [Errno 2] No such file or directory: 'Xvfb'
⑴ (package) 해결방법 : Xvfb 패키지 설치 (ref) (failed)
sudo apt-get install xvfb
pip install xvfbwrapper
⑵ (grammar) 해결방법 : pyvirtualdisplay를 사용하지 않기 (success)
# before
...
from pyvirtualdisplay import Display
display = Display()
display.start()
pdfkit.from_string(output_text, 'my_pdf.pdf', configuration=config)
display.stop()
# after
...
pdfkit.from_string(output_text, 'my_pdf.pdf', configuration=config)
55. TypeError: import_optional_dependency() got an unexpected keyword argument 'errors'
⑴ (grammar) 해결방법 : pip install pandas --upgrade
⑵ 레퍼런스
56. bash: java: command not found
⑴ (package) 해결방법 (ref)
sudo apt install default-jre
57. Error: LinkageError occurred while loading main class picard.cmdline.PicardCommandLine java.lang.UnsupportedClassVersionError: picard/cmdline/PicardCommandLine has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
⑴ (package) 원인 : picard 버전이 Java 17 (ver. 61.0)이었는데 내 시스템은 Java 11 (ver. 55.0)이었던 경우
⑵ (package) 해결책 : picard를 downgrade. 천천히 버전을 내려 가면서 테스트하면 해결할 수 있음
58. Assertion failure in +[NSUndoManager _endTopLevelGroupings], NSUndoManager.m:1117
⑴ (system) 원인 : 파이썬의 여러 thread가 동시에 macOS GUI에 액세스 하려고 시도할 때 tread-safety conflict 때문에 생기는 것으로 추정
⑵ (system) 해결책 1. 맥북 환경이 아니라 리눅스 환경에서 실행
⑶ (grammar) 해결책 2. 웹서버의 interactive mode가 이 문제를 일으킬 수 있는데, 이 경우 이를 disable 함으로써 해결할 수도 있음
import matplotlib
matplotlib.use('Agg')
59. ImportError: cannot import name 'Int64Index' from 'pandas'
⑴ (package) 해결방법 : pandas 및 xgboost 재설치 (ref)
pip uninstall pandas
pip install pandas --upgrade
pip3 uninstall xgboost
pip3 install xgboost
60. E: Unable to locate package tree
⑴ (package) 해결방법
sudo apt-get install update
sudo apt-get install tree
입력: 2023.01.28 02:15
수정: 2023.07.28 17:22