줄리아 Julia의 패키지(package)에 대해 다룹니다.
2024. 02. 01 최초 작성
다음 사이트를 참고하고 ChatGPT의 도움을 받았습니다.
https://techytok.com/lesson-packages/
Julia 개발 환경 구축은 다음 포스트를 참고하세요.
Visual Studio Code 사용한 Julia 개발 환경만들기(Windows / Ubuntu / Macbook M1)
https://webnautes.tistory.com/2216
Julia 강좌를 진행하고 있습니다.
Julia 강좌 1 - 변수와 데이터 타입
https://webnautes.tistory.com/2218
Julia 강좌 2 - 함수, void function, Optional positional arguments, Keyword arguments
https://webnautes.tistory.com/2220
Julia 강좌 3 - 배열, 튜플, 딕셔너리
https://webnautes.tistory.com/2229
Julia 강좌 4 - 제어문 if ... else, for, break, continue, while, enumerate
https://webnautes.tistory.com/2235
Julia 강좌 5 - 브로드캐스팅(broadcasting)
https://webnautes.tistory.com/2240
Julia 강좌 6 - 변수 유효 범위( Variable Scope ) : 전역(global), 로컬(local)
https://webnautes.tistory.com/2247
Julia 강좌 7 - 모듈(module)
https://webnautes.tistory.com/2253
Julia 강좌 8 - 타입(type)
https://webnautes.tistory.com/2260
Julia 강좌 9 - 패키지(package)
https://webnautes.tistory.com/2268
줄리아 패키지를 만드는 방법을 배웁니다. 줄리아 패키지는 모듈과 해당 모듈의 종속성에 대한 정보를 포함합니다. 모듈 대신 패키지를 만들면 패키지를 미리 컴파일할 수 있고(따라서 특히 큰 모듈의 경우 패키지를 연속적으로 로드하는 것이 더 빨라집니다) 모듈이 제대로 작동하는 데 필요한 모든 종속성을 설치하기가 더 쉬워진다는 장점이 있습니다.
패키지 생성하기
다음 코드를 사용하여 패키지를 생성할 수 있습니다.
using Pkg Pkg.generate("NewPackage") |
아래 스크린샷처럼 프로젝트 폴더 아래에 hello.jl 파일에 위 코드를 저장하여 실행하세요. 본 포스트는 Visual Studio Code에 julia 환경이 구성된 것을 가정하고 진행합니다. 참고로 .vscode 폴더는 Visual Studio Code에서 사용하는 설정이 저장된 폴더입니다.
NewPackage 폴더가 생성된 것을 볼 수 있습니다. NewPackage 폴더에 모듈 종속성 정보를 저장할 Project.toml 파일이 위치하며 하위 폴더 src에 모듈이 저장되는 NewPackage.jl 파일이 위치합니다.
NewPackage/src에 위치한 NewPackage.jl 파일에는 다음처럼 모듈 NewPackage의 기본 코드가 포함되어 있습니다.
module NewPackage greet() = print("Hello World!") end # module NewPackage |
생성한 패키지 사용해보기
진행시 주의할점은 아래 스크린샷처럼 패키지를 사용할 파일인 hello.jl과 패키지 폴더 NewPackage가 같은 폴더에 존재해야 합니다.
이제 다음 코드를 통해 패키지를 활성화하고 테스트할 수 있습니다. 주의할 점은 패키지를 활성화 하는 코드가 없으면 NewPackage 패키지를 찾을 수 없어서 에러가 발생합니다.
# 패키지를 활성화합니다. using Pkg Pkg.activate("NewPackage") # 패키지에 포함된 모듈을 로드하고 모듈의 함수를 호출합니다. using NewPackage NewPackage.greet() |
실행하면 NewPackage 패키지가 활성화되었다는 메시지가 보인 후, NewPackage 패키지에 포함된 NewPackage 모듈의 greet 함수가 호출되어 Hello World!가 출력됩니다. 뒤에 이상한 문자가 보이는 것은 greet 함수에서 println 대신에 print를 사용하고 있어서입니다.
외부 라이브러리 사용하기 위해 종속성 추가
프로젝트에서 외부 라이브러리를 사용하기 위해 종속성을 추가해보겠습니다.
다음 코드를 사용하여 SpecialFunctions 패키지를 설치합니다. 앞에서 사용했던 hello.jl 파일에 작성하세요.
using Pkg Pkg.activate("NewPackage") Pkg.add("SpecialFunctions") |
실행하면 패키지가 설치됩니다.
이제 두개의 파일을 작성하여 테스트합니다.
다음 코드처럼 NewPackage/src 경로에 있는 NewPackage.jl 파일을 수정합니다.
module NewPackage # SpecialFunctions의 gamma 함수를 사용할 수 있게됩니다. using SpecialFunctions # 외부에서 mySpecialFunction 함수를 모듈 이름 지정하지 않아도 사용할 수 있도록 합니다. export mySpecialFunction greet() = print("Hello World!") # 함수를 추가합니다. function mySpecialFunction(x) return x^2 * gamma(x) end end # module NewPackage |
다음 코드를 hello.jl 파일에 작성하여 NewPackage 패키지에 추가된 mySpecialFunction 함수를 호출합니다.
using Pkg Pkg.activate("NewPackage") using NewPackage # 모듈내에서 export를 선언했기 때문에 모듈이름 NewPackage를 생략해도 됩니다. println(mySpecialFunction(42)) |
패키지 초기화
프로젝트를 다른 피시로 이동한 후, 프로젝트에 포함된 설정 파일(Project.toml 및 Manifest.toml)에 있는 대로 의존성 있는 패키지를 설치하기 위해 다음 코드를 실행해야 한다고 합니다.
using Pkg Pkg.instantiate() |
'Julia > Julia 강좌' 카테고리의 다른 글
Julia 강좌 8 - 타입(type) (0) | 2024.01.20 |
---|---|
Julia 강좌 7 - 모듈(module) (0) | 2024.01.06 |
Julia 강좌 6 - 변수 유효 범위( Variable Scope ) : 전역(global), 로컬(local) (4) | 2023.12.22 |
Julia 강좌 1 - 변수와 데이터 타입 (1) | 2023.12.15 |
Julia 강좌 5 - 브로드캐스팅(broadcasting) (0) | 2023.12.11 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!