▶ 자연과학/▷ Python

【Python】 파이썬 주요 트러블슈팅 [61-80]

초록E 2023. 8. 17. 14:33

파이썬 주요 트러블슈팅 [61-80]

 

추천글 : 【Python】  파이썬 목차 


 

61. ImportError: libGL.so.1: cannot open shared object file: No such file or directory

(package) 문제 상황 : import cv2를 할 때 문제가 발생함 

(package) 해결방법 1. Ubuntu/Debian

 

sudo apt-get update
sudo apt-get install -y libgl1-mesa-glx
pip uninstall opencv-python
pip install opencv-python

 

 (package) 해결방법 2. CentOS/Fedora

 

sudo yum update
sudo yum install -y mesa-libGL
pip uninstall opencv-python
pip install opencv-python

 

 

62. AttributeError: module 'keras.optimizers' has no attribute 'Adam'

(grammar) 해결 방법 : 문제가 되는 함수에 다음 코드를 삽입

 

import tensorflow as tf

tf.compat.v1.disable_eager_execution()
experimental_run_tf_function=False

 

 (grammar) 주의사항 : optimizers.Adam이 아니라 optimizers.adam으로 쓰여 있는 코드도 있는데, 이 경우 환경에 따라 오류를 일으킬 때도 있고 아닐 때도 있음을 유의

 

 

63. ImportError: cannot import name '__author__' from 'scanpy._metadata' (/opt/conda/lib/python3.8/site-packages/scanpy/_metadata.py)

(package) 해결 방법 : 아무 패키지도 설치하지 않은 맨 처음에 scanpy==1.9.0을 설치

⑵ Kubeflow 특유의 문제로 여겨짐 

 

 

64. Error reading image file /home/jovyan/_janus/microbiome/Region1_colon_d0_rotated.tif while estimating memory requirements: TIFF has unsupported color type - must be 8-bit per component RGB or 8/16-bit gray

(grammar) 문제점 : Region1_colon_d0_rotated.tif의 파일이 높은 depth의 .tif 파일인 게 문제가 됨

 (grammar) 해결 방법 : https://online-image-converter.com/에서 8-bit .tiff 파일로 변환 

 

 

65. java.lang.IllegalArgumentException: Unsupported class file major version 55

(package) 해결 방법 : 리눅스 상에서 java 버전을 upgrade 혹은 downgrade (ref)

 

 

66. AttributeError: module 'polars' has no attribute 'toggle_string_cache'

(package) 문제 상황 : cnv.io.genomic_position_from_gtf('./gencode.v19.annotation.gtf.gz',adata = adata)에서 에러 발생

(package) 해결 방법 : pip install polars==0.16.1과 같이 polars 버전을 0.17 미만으로 변경 (ref)

Incompatible with polars version >=0.17 due to usage of polars.toggle_string_cache

 

 

67. ModuleNotFoundError: No module named 'ot'

 (package) 해결 방법 : pip install POT 

 

 

68. AttributeError: module 'scvi' has no attribute 'model'

 (package) 해결 방법 : pip install scvi-tools 

 

 

69. JVMNotFoundException: No JVM shared library file (libjvm.so) found. Try setting up the JAVA_HOME environment variable properly.

 (package) 해결 방법 1. sudo apt install default-jre

(package) 해결 방법 2. sudo apt install openjdk-8-jre-headless

(package) 해결 방법 3. sudo apt install openjdk-11-jre-headless

(package) 해결 방법 4. sudo apt install openjdk-13-jre-headless

(package) 해결 방법 5. sudo apt install openjdk-16-jre-headless

(package) 해결 방법 6. sudo apt install openjdk-17-jre-headless

(package) 해결 방법 7. 수동 설치

Official Oracle website에서 Java 설치 : wget 이용

export JAVA_HOME=/path/to/java/jdk 

export PATH=$PATH:$JAVA_HOME/bin

echo $JAVA_HOME  # verification

java -version  # verification

⑥ restart and re-run 

 

 

70. ValueError: all the input array dimensions except for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 316 and the array at index 1 has size 1

(grammar) 문제상황 : 상관계수를 구하는 두 인자들이 동일한 shape를 가져야 하는데 그렇지 않은 경우 에러가 호출됨

(grammar) 해결방법 : 일반적으로 두 인자를 .flatten()으로 처리하여 1차원으로 만든 뒤 상관계수를 구하면 해결됨. 그러나 그 중 하나가 Matrix 형인 경우 .flatten을 해도 flatten 되지 않으므로, 이 경우 np.array로 변경한 다음에 상관계수를 구하여야 함

 

from scipy.stats import spearmanr

bulk_like_merged_adata_1 = np.sum(merged_adata_1_common.X, axis=0)
bulk_like_merged_adata_1 = np.array(bulk_like_merged_adata_1)
bulk_like_merged_adata_1 = bulk_like_merged_adata_1[0]

bulk_expression = np.sum(adata_common.X, axis=0)
bulk_expression = np.array(bulk_expression)
bulk_expression = bulk_expression[0]

# Calculate the Spearman correlation
corr, _ = spearmanr(bulk_like_merged_adata_1, bulk_expression_vector)

 

 

71. scanpy.pl.spatial의 font size가 변경되지 않는 경우

(grammar) 문제상황 : plt.rc('font', size = 10)과 같이 하면 scanpy plot도 일괄 폰트 변경되는데 그렇지 않은 경우가 있음

(grammar) 해결방법 : 다음 코드가 있으면 지우기 (pltscanpy 셋팅이 충돌함)

 

sc.set_figure_params(scanpy=True, fontsize=14)
sc.set_figure_params(facecolor="white", figsize=(8, 8))
sc.settings.verbosity = 3
# verbosity: errors (0), warnings (1), info (2), hints (3)

 

 

72. ImportError: cannot import name 'url_decode_stream' from 'werkzeug.urls'

(package) 해결방법 (ref)

 

# My original requirements.txt

bcrypt==4.0.1
blinker==1.6.2
click==8.1.7
dnspython==2.4.2
email-validator==2.0.0.post2
Flask==3.0.0
Flask-Bcrypt==1.0.1
Flask-Login==0.6.2
Flask-SQLAlchemy==3.1.1
Flask-WTF==1.2.0
greenlet==2.0.2
idna==3.4
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.3
SQLAlchemy==2.0.21
typing_extensions==4.8.0
Werkzeug==3.0.0
WTForms==3.0.1


# My modified requirements.txt

bcrypt==4.0.1
blinker==1.6.2
click==8.1.7
dnspython==2.4.2
email-validator==2.0.0.post2
Flask==2.3.0
Flask-Bcrypt==1.0.1
Flask-Login==0.6.2
Flask-SQLAlchemy==3.1.1
Flask-WTF==1.2.1
greenlet==2.0.2
idna==3.4
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.3
SQLAlchemy==2.0.21
typing_extensions==4.8.0
Werkzeug==2.3.0
WTForms==3.0.1

 

 

73. TypeError: 'module' object is not callable

 (grammar) 해결 방법

 

# before
import glob
mouse_tissue_files = glob("./data/droplet/*")

# after
import glob
# Correctly use glob to list files matching the pattern
mouse_tissue_files = glob.glob("./data/droplet/*")

 

 

74. error: urllib3 2.2.1 is installed but urllib3<1.27,>=1.25.4 is required by {'botocore'}

(package) 결 방법 (ref)

 

pip install urllib3==1.25.11

 

 

75. UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('<U32'), dtype('<U32')) -> dtype('<U32')

(grammar) 원인 : 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.csvtissue_positions_list.csv로 이름을 바꾸고, 예전 버전처럼 헤더를 지워주어야 함

 

 

76. ImportError: cannot import name 'optim' from 'flax'

 (package) 결 방법 (ref)

 

pip uninstall flax
pip install flax==0.5.3

 

 

77. OSError: Unable to open file: base_htrans.gin. Searched config paths: ['', 'third_party/py/meliad/transformer/ configs’].

(grammar) ./meliad_lib/meliad/transformer/configs/base_htrans.gin 파일을 위 path 중 하나로 옮기기 (ref)

 

 

78. ModuleNotFoundError: No module named 'gin'

 (package) 해결 방법 : pip install gin-config (ref)

 

 

79. ImportError: Cannot load backend 'TkAgg' which requires the 'tk' interactive framework, as 'headless' is currently running

(grammar) 해결방법 1. import matplotlibmatplotlib.use('TKAgg')import matplotlib.pyplot as plt (ref)

(grammar) 해결방법 2. 필자의 경우 environment를 지우고 다시 깔아서 실행할 때도 있음 

 

 

80. OSError: cannot open resource

 (grammar) 문제 상황 : custom font를 지정하는 경우 폰트 파일의 위치를 조회하지 못해 문제가 발생 

(grammar) 해결 방법 (ref) : 다음과 같이 다른 대체 폰트를 사용

 

import os
import cv2

font_path = os.path.join(cv2.__path__[0],'qt','fonts','DejaVuSans.ttf')
font = ImageFont.truetype(font_path, size=128)

 

입력: 2023.08.17 14:29

수정: 2024.05.05 22:00