Python IDE 설정

1. Spyder Project 설정

1.1. ISORT 설정

.isort.cfg를 프로젝트 root 폴더에 만들고 아래내용으로 채운다.

[settings]
profile = black
multi_line_output=3
import_heading_stdlib = Standard library imports
import_heading_firstparty = Local imports
import_heading_thirdparty = Third party imports


2. 자주 사용하는 Library

생성한 Python Project 폴더에 아래 파일을 압축 해제하여 oklib 폴더를 생성한다.
oklib Download


3. 필요한 Package

이름 저장소 설명
opencv anaconda 영상처리 Library
mayavi anaconda surf, mesh등 3d Plot 가속화
pyqtgraph anaconda QT를 이용한 빠른 Plot
basemap anaconda Matplotlib 지도 투영
basemap-data-hires anaconda Matplotlib 지도 투영(with coastlines and political boundaries)
rasterio anaconda GeoTiff library
dill anaconda Python 변수 파일 입출력
pyserial anaconda Serial library
gdal anaconda GDAL is a translator library for raster and vector geospatial data formats that is released under an X/MIT style Open Source license by the Open Source Geospatial Foundation.
cartopy anaconda cartographic python library with matplotlib support.
cartopy_offlinedata conda-forge Offline data for using cartopy without an internet connection
pymap3d conda-forge 지구 좌표계 변화
skyfield conda-forge Elegant astronomy for Python
vpython conda-forge 3D animation 생성
vispy conda-forge GPU 가속을 이용한 빠른 Plot
shapely conda-forge Manipulation and analysis of geometric objects
mplcursors conda-forge Maplotlib에 Data Cursor 추가
exifread conda-forge Read Exif metadata from tiff and jpeg files
gitpython conda-forge GitPython is a python library used to interact with Git repositories.
jupyter_contrib_nbextensions conda-forge jupyter notebook extension
jupyterthemes conda-forge Mapplotlib theme 지원
debugpy conda-forge Debug tool for nvim
pylsp-mypy conda-forge Mypy linter for the Python LSP Server.
pyupgrade conda-forge A tool to automatically upgrade syntax for newer versions.
ipympl conda-forge Jupyterlab maplotlib extension
xeus-python conda-forge Jupyterlab debugger extension
imutils conda-forge 영상처리 library
pipreqs conda-forge Pip requirements.txt generator based on imports in project
qscintilla2 conda-forge Syntax highlight editor
borb conda-forge PDF util
pytesseract conda-forge optical character recognition (OCR) tool
numexpr3 Github 간단한 연산에 대한 최적화
ctypeslib2 PyPi c header를 python class로 변환
refurb conda-forge A tool for refurbishing and modernizing Python codebases
tkinterdnd2 PyPi Tkinter native drag and drop support for windows, unix and Mac OSX
pyinstaller anaconda python을 실행파일로 변환
pyautogui conda-forge 컴퓨터 자동화
pyperclip conda-forge 컴퓨터 clipboard 활용
python-pptx conda-forge Python에서 pptx 작성
python-docx conda-forge Python에서 docx 작성
jupyterlab-git conda-forge Jupyterlab에서 git 사용
jupyterlab-variableinspector conda-forge Jupyterlab variableinspector
nb_black conda-forge jupyterlab black formatter extension
jupyterlab-drawio conda-forge jupyterlab drawio extension
jupyterlab_vim conda-forge jupyterlab vim extension
pynvim conda-forge util for nvim
Pyside2 conda-forge pyside2
Geopandas conda-forge working with geospatial data in python easier.
itur PyPi the ITU-R Recommendations for atmospheric attenuation modeling.
doq PyPi Docstring generator.
cmake-language-server PyPi cmake lsp for nvim-lsp
qt-material PyPi Qt material theme
pyswarms PyPi Partical Swarms Optimization
hml_equation_parser PyPi HWP의 수식을 latex로 변환
mplcyberpunk PyPi cyberpunk theme of matplotlib
lukas-blecher/LaTeX-OCR Github 수식을 Latex으로 변환.(새로운 환경에 설치할것)


4. 필요한 Package for ML

이름 저장소 설명
pytorch pytorch https://pytorch.org/get-started/locally/에서 확인
pytorch-lightning conda lightweight PyTorch wrapper for high-performance
torchmetrics conda collection of ML metrics for distributed, scalable PyTorch
mlxtend conda Mlxtend is extension for ML
tensorboard conda tensorboard
torchinfo conda Model summary in PyTorch, based off of the original torchsummary
captum conda a model interpretability and understanding library for PyTorch
albumentations conda Fast image augmentation library and easy to use wrapper around other libraries
ray-tune conda Ray is a fast and simple framework for building and running distributed applications
grad-cam conda Advanced AI Explainability for computer vision
fiona conda Fiona reads and writes spatial data files
fvcore conda Collection of common code shared among different research projects in FAIR computer vision team
explainable-cnn PyPi Flexible visualization package for generating layer-wise explanations for CNNs
mmrotate github rotated object detection based on PyTorch
pycuda conda Python wrapper for CUDA
onnx conda Open Neural Network Exchange library
onnxruntime conda cross-platform, high performance ML inferencing and training accelerator
onnx_tool github A parser, editor and profiler tool for ONNX models.
tensorrt nvidia TensorRT is a C++ library for high performance inference on NVIDIA GPUs and deep learning accelerators.
neural-compressor pip SOTA low-bit LLM quantization.


5. Linux에서 한글 입력

LINUX의 QT 프로그램에서는 한글 입력이 가능하지만 Anaconda의 QT를 사용하는 GUI 프로그램의 경우 한글 입력이 되지 않는 경우가 있다. 그럴 경우에는 Linux의 Qt 입력기 Library를 anaconda에 복사해 준다.

cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libqt5im-nimf.so /home/ok97465/anaconda3/plugins/platforminputcontexts


6. VScode Project 설정

6.1. 환경변수 설정

.env를 프로젝트 root 폴더에 만들고 아래 내용으로 채운다.

PYTHONPATH=/home/ok97465/codepy/scientific
MPLCURSORS={"multiple": 1}

Setting.json 설정

{
    "terminal.integrated.inheritEnv": false,
    "terminal.integrated.tabs.enabled": true,
    "editor.fontFamily": "D2Coding Ligature",
    "editor.fontLigatures": true,
    "editor.snippetSuggestions": "top",
    "editor.minimap.enabled": false,
    "editor.lineNumbers": "on",
    "editor.rulers": [
        88
    ],
    "editor.tabSize": 4,
    "editor.cursorStyle": "line",
    "editor.insertSpaces": false,
    "editor.wordSeparators": "/\\()\"':,.;<>~!@#$%^&*|+=[]{}`?-",
    "editor.wordWrap": "off",
    "editor.formatOnPaste": true,
    "editor.formatOnSave": true,
    "editor.formatOnType": true,
    "editor.formatOnSaveMode": "modifications",
    "[python]": {
        "editor.formatOnSaveMode": "file"
    },
    "python.formatting.provider": "black",
    "python.showStartPage": true,
    "python.analysis.diagnosticMode": "workspace",
    "python.languageServer": "Pylance",
    "python.linting.enabled": true,
    "python.linting.lintOnSave": true,
    "python.linting.pylintEnabled": true,
    "python.linting.pylintArgs": [
        "--max-line-length=88",
        "--disable=None",
        "--const-rgx=(([a-z_][a-z0-9_]{2,30})|([A-Z_][A-Z0-9_]{2,30})|(__*.__))"],
    "python.linting.pydocstyleEnabled": true,
    "python.linting.pydocstyleArgs": ["--convention=google"],
    "python.linting.pycodestyleEnabled": true,
    "python.linting.pycodestyleArgs": [
        "--ignore=W503,E203",
        "--max-line-length=88"],
    "python.formatting.autopep8Args": [
        "--ignore",
        "E402"
    ],
    "jupyter.sendSelectionToInteractiveWindow": true,
    "jupyter.enableNativeInteractiveWindow": true,
    "jupyter.themeMatplotlibPlots": true,
    "jupyter.experiments.enabled": true,
    "vim.easymotion": true,
    "vim.smartRelativeLine": true,
    "vim.highlightedyank.enable": true,
    "vim.highlightedyank.duration": 400,
    "vim.leader": "<space>",
    "vim.autoSwitchInputMethod.enable": true,
    "vim.autoSwitchInputMethod.defaultIM": "fcitx-keyboard-kr-kr104",
    "vim.autoSwitchInputMethod.obtainIMCmd": "/usr/bin/fcitx-remote",
    "vim.autoSwitchInputMethod.switchIMCmd": "/usr/bin/fcitx-remote -s {im}",
    "markdown-preview-enhanced.previewTheme": "atom-light.css",
    "markdown-preview-enhanced.codeBlockTheme": "atom-dark.css",
    "doxdocgen.generic.briefTemplate": "\\brief {text} \n * \\details \\verbatim \\endverbatim",
    "doxdocgen.generic.paramTemplate": "\\param {param} ",
    "doxdocgen.generic.returnTemplate": "\\return {type} ",
    "doxdocgen.generic.authorEmail": "ok97465@gmail.com",
    "doxdocgen.generic.authorName": "ok97465",
    "doxdocgen.generic.authorTag": "\\author {author}",
    "doxdocgen.cpp.tparamTemplate": "\\tparam {param} ",
    "doxdocgen.generic.dateTemplate": "\\date {date}",
    "doxdocgen.file.fileTemplate": "\\file {name}",
    "doxdocgen.file.versionTag": "",
    "doxdocgen.file.copyrightTag": "",
    "doxdocgen.generic.order": [
        "brief",
        "tparam",
        "param",
        "return"
    ],
    "doxdocgen.file.fileOrder": [
        "file",
        "author",
        "date",
        "brief"
    ],
    "AREPL.customCSS": "",
    "AREPL.defaultFilterTypes": [
        "<class 'module'>",
        "<class 'function'>",
        "<class 'builtin_function_or_method'>",
        "<class 'numpy.ufunc'>"
    ],
    "AREPL.defaultFilterVars": [
        "colormap",
        "jtstyle",
        "newaxis",
        "pi",
        "fig",
        "ax1"
    ],
    "gitlens.views.repositories.files.layout": "list",
    "explorer.confirmDelete": false,
    "keyboard.dispatch": "keyCode",
    "search.smartCase": true,
    "workbench.editorAssociations": {
        "*.ipynb": "jupyter-notebook"
    },
    "notebook.cellToolbarLocation": {
        "default": "right",
        "jupyter-notebook": "left"
    },
    "security.workspace.trust.untrustedFiles": "open",
    "workbench.startupEditor": "none",
}