[Julia] Julia 외부 라이브러리 간단 사용법

2024. 3. 20. 12:35·프로그래밍 Programming

Julia에 대한 기초 지식을 배우다가 갑자기 외부 라이브러리를 테스트해보고 싶어서 정리하는 글이다.

 

일단 사용환경은 Visual Studio Code이다. (Jupyter lab 또는 notebook이 아니라 jl 코드를 돌려야해서)

VS Code에서 Julia extension을 설치했다는 가정 하에 이야기한다.

 

 

1. 기초적으로 알아야 하는 내용

 

Python에서 인공지능을 해본 사람들이라면 알겠지만 환경이 중요하다. 어떤 라이브러리를 설치했고 어떤 파이썬 버전을 설치했냐에 따라 코드가 돌아갈 수도 있고 에러를 띄울 수도 있다.

마찬가지로 julia도 미리 환경을 신경써야 하는데 이를 위해 보통 Pkg 라이브러리를 사용한다.

 

처음 Julia를 열었을 때 

 

 

] 키를 통해 package로 넘어갈 수 있다.

여기서 

add [package name]

 

다음 코드를 통해 패키지를 설치할 수 있다.

 

package에 대한 자세한 내용은 Pkg document에서 접할 수 있다. 필자도 지금 읽는 중이다.

 

 

2. 본인이 환경을 만들고 싶은 경우

 

다음 문서를 참고하면 좋다.

본인이 직접 환경를 만들고 싶을 수 있는데 그 경우에는 package 모드에서 activate (package 이름)을 작성한다. 여기서는 MyProject로 지정한다. 그러면 MyProject 환경이 생기면서 Project.toml도 추가되는데 toml은 구성 파일 형식 이름이라고 한다. 이 안에 라이브러리와 그에 맞는 key가 생성된다. 이 파일을 가지고 있으면 나중에 배포할 때 다른 사람도 내가 어떤 패키지를 사용했는지 알 수 있고 그에 맞게 패키지를 설치할 수도 있다.

 

(@v1.8) pkg> activate MyProject
Activating new environment at `~/MyProject/Project.toml`

(MyProject) pkg> st
    Status `~/MyProject/Project.toml` (empty project)

 

다만 라이브러리를 추가하기 전까지는 폴더가 생기지는 않는다.

아래 isdir을 보면 false인 것으로 아직 폴더가 생성되지 않음을 알 수 있다./

 

 

julia> isdir("MyProject")
false

(MyProject) pkg> add Example
   Resolving package versions...
   Installed Example ─ v0.5.3
    Updating `~/MyProject/Project.toml`
  [7876af07] + Example v0.5.3
    Updating `~~/MyProject/Manifest.toml`
  [7876af07] + Example v0.5.3
Precompiling environment...
  1 dependency successfully precompiled in 2 seconds

julia> readdir("MyProject")
2-element Vector{String}:
 "Manifest.toml"
 "Project.toml"

julia> print(read(joinpath("MyProject", "Project.toml"), String))
[deps]
Example = "7876af07-990d-54b4-ab0e-23690620f79a"

julia> print(read(joinpath("MyProject", "Manifest.toml"), String))
# This file is machine-generated - editing it directly is not advised

julia_version = "1.8.2"
manifest_format = "2.0"
project_hash = "2ca1c6c58cb30e79e021fb54e5626c96d05d5fdc"

[[deps.Example]]
git-tree-sha1 = "46e44e869b4d90b96bd8ed1fdcf32244fddfb6cc"
uuid = "7876af07-990d-54b4-ab0e-23690620f79a"
version = "0.5.3"

 

다음을 통해 패키지 버전도 확인할 수 있다.

 

 

 

3. 다른 사람이 만든 환경을 사용하고 싶은 경우

shell> git clone https://github.com/JuliaLang/Example.jl.git
Cloning into 'Example.jl'...
...

(@v1.8) pkg> activate Example.jl
Activating project at `~/Example.jl`

(Example) pkg> instantiate
  No Changes to `~/Example.jl/Project.toml`
  No Changes to `~/Example.jl/Manifest.toml`

 

다음과 같이 다른 사람이 만든 환경을 쓰고 싶으면 git으로 받아서 activate를 하면 된다.

그런데 Example.jl 대신 그 폴더에 들어가서 toml이 있는 폴더에서 activate . 후에 instantiate를 하면 동일하게 적용된다.

 

 


참고자료

 

Pkg document : https://pkgdocs.julialang.org/v1/

https://youtu.be/QnctM0MUox8?si=8e-8yTf-LSHfhRAQ

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 Programming' 카테고리의 다른 글

[에러기록] XlaRuntimeError: UNIMPLEMENTED: Kernel launch needs more blocks (3199360032) than allowed by hardware (2147483647).  (0) 2024.05.14
[Julia] 변수 Variables  (0) 2024.04.30
[Julia] Julia 프로그래밍 공부자료  (0) 2024.02.06
[JAX] 버전에 따른 변화  (0) 2023.11.22
[JAX] optax에서 learning rate 확인하는 방법  (0) 2023.08.23
'프로그래밍 Programming' 카테고리의 다른 글
  • [에러기록] XlaRuntimeError: UNIMPLEMENTED: Kernel launch needs more blocks (3199360032) than allowed by hardware (2147483647).
  • [Julia] 변수 Variables
  • [Julia] Julia 프로그래밍 공부자료
  • [JAX] 버전에 따른 변화
보통의공대생
보통의공대생
수학,프로그래밍,기계항공우주 등 공부하는 기록들을 남깁니다.
  • 보통의공대생
    뛰는 놈 위에 나는 공대생
    보통의공대생
  • 전체
    오늘
    어제
    • 분류 전체보기 (468)
      • 공지 (1)
      • 영어 공부 English Study (40)
        • 텝스 TEPS (7)
        • 글 Article (21)
        • 영상 Video (10)
      • 연구 Research (99)
        • 최적화 Optimization (3)
        • 데이터과학 Data Science (7)
        • 인공지능 Artificial Intelligent (40)
        • 제어 Control (45)
      • 프로그래밍 Programming (103)
        • 매트랩 MATLAB (25)
        • 파이썬 Python (33)
        • 줄리아 Julia (2)
        • C++ (3)
        • 리눅스 우분투 Ubuntu (6)
      • 항공우주 Aeronautical engineeri.. (21)
        • 항법 Navigation (0)
        • 유도 Guidance (0)
      • 기계공학 Mechanical engineering (13)
        • 열역학 Thermodynamics (0)
        • 고체역학 Statics & Solid mechan.. (10)
        • 동역학 Dynamics (1)
        • 유체역학 Fluid Dynamics (0)
      • 수학 Mathematics (34)
        • 선형대수학 Linear Algebra (18)
        • 미분방정식 Differential Equation (3)
        • 확률및통계 Probability & Sta.. (2)
        • 미적분학 Calculus (1)
        • 복소해석학 Complex Analysis (5)
        • 실해석학 Real Analysis (0)
      • 수치해석 Numerical Analysis (27)
      • 확률 및 랜덤프로세스 Random process (2)
      • 추론 & 추정 이론 Estimation (3)
      • 기타 (26)
        • 설계 프로젝트 System Design (8)
        • 논문작성 Writing (55)
        • 세미나 Seminar (2)
        • 생산성 Productivity (3)
      • 실험 Experiment (1)
      • 유학 생활 Daily (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    서버
    Numerical Analysis
    텝스공부
    딥러닝
    고체역학
    IEEE
    수치해석
    에러기록
    obsidian
    Julia
    생산성
    pytorch
    LaTeX
    텝스
    Statics
    MATLAB
    논문작성
    WOX
    논문작성법
    ChatGPT
    teps
    우분투
    인공지능
    Zotero
    matplotlib
    Linear algebra
    Dear abby
    옵시디언
    JAX
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
보통의공대생
[Julia] Julia 외부 라이브러리 간단 사용법
상단으로

티스토리툴바