This page looks best with JavaScript enabled

Julia Dojo: quản lí gói trong Julia

 ·   ·  ☕ 5  phút đọc

Chào mừng mọi người đến với Julia Dojo.

Là con người, không phải ai trong số chúng ta cũng có khả năng cân tất cả các việc cùng một lúc, đặc biệt với đống kiến thức tích lũy qua cả trăm năm của nhân loại. Hiển nhiên rằng, một người không thể lập trình mọi thứ từ con số không. Vì vậy, chúng ta có cộng đồng người dùng, có các gói bổ trợ cho một ngôn ngữ lập trình. Trong bài viết ngày hôm nay, chúng ta sẽ tìm hiểu về cách quản lí và sử dụng các gói như vậy trong Julia.

Quản lí một gói

Julia cung cấp tính năng quản lí gói một cách mặc định trong Julia REPL. Để kích hoạt trình quản lí gói, chúng ta nhấn phím ] ở trên một dòng trống.

Giao diện quản lí gói, đầu dòng chuyển thành `pkg>`
Giao diện quản lí gói, đầu dòng chuyển thành `pkg>`
Mọi đoạn code sau đây được sử dụng trong chế độ quản lí gói của Julia

Để cài gói trong Julia, chúng ta sử dụng cú pháp add gói. Chúng ta có thể cài một hoặc nhiều gói, hoặc dùng link github để cài.

add DataFrame IJulia
add https://github.com/tlienart/Franklin.jl

Lưu ý rằng link github sẽ tải bản mới nhất hiện có, bao gồm cả các tính năng thử nghiệm. Sau khi cài đặt một thời gian, chúng ta sẽ cần update gói

update IJulia
update 

Lệnh update sẽ update toàn bộ gói trong khi update TênGói chỉ update một gói được định sẵn thôi.

Kiểm tra những gói được cài đặt:

st
st TênGói

Nếu có gói không dùng, chúng ta xóa bỏ nó bằng cách

rm TênGóiKhôngDùng

Khi cài hoặc update gói, những gói phụ thược sẽ được cài đặt theo, khi xóa gói chúng sẽ được tự xóa đi, nên các bạn không cần lo về gói phụ thuộc.

Sử dụng một gói

Cách sử dụng một gói trong Julia rất đơn giản. Một gói thông thường sẽ có nhiều module, trong đó có một module chính mang tên của gói đó (ví dụ như gói IJulia.jl sẽ có module IJulia). Chúng ta có hai từ khóa importusing (sử dụng trong chế độ bình thường)

1
2
import TênModule
using TênModule

Sử dụng import sẽ chỉ nhập tên của gói vào phạm vi toàn cục, trong khi using sẽ nhập toàn bộ những hằng số, biến số hoặc hàm mà gói đó xuất ra.

1
2
import Module1
using Module2

Giả sử Module1hàm_a, Module2hàm_b. Trong ví dụ trên, nếu chúng ta muốn gọi hai hàm:

1
2
Module2.hàm_a()
hàm_b() # hàm_b được cho ra phạm vi toàn cục

Ngoài ra chúng ta có thể chỉ using một số thành phần của gói:

1
2
using LinearAlgebra: svd # chỉ hàm svd sẽ được nhập
?svd # xem hàm svd

Môi trường của gói

Trình quản lí gói của Julia quản lí theo môi trường, nhìn lại ảnh phía trên, chúng ta sẽ thấy có phần (v1.3) ở trước chữ pkg>:

môi trường mặc định, Julia 1.3
môi trường mặc định, Julia 1.3

Phần v1.3 cho biết môi trường đang hiện hoạt của Julia. Hãy hiểu một cách đơn giản:

  • Julia có nhiều môi trường khác nhau
  • Trong môi trường sẽ có những gói được cài khác nhau
  • Môi trường thực chất chỉ là một thư mục, thư mục này chứa một file, file này là danh mục các gói đã được cài
  • Nếu môi trường không có gói nào thì sẽ không dùng được gói đó, dù nó đã được cài (using gây lỗi)
  • Khi làm việc sẽ có một môi trường được kích hoạt (môi trường hiện hành)
  • Bạn có thể chuyển giữa các môi trường

Khi cài một gói mà đã được cài ở môi trường khác, Julia chỉ thêm gói đó vào trong danh mục gói của môi trường hiện hành, chứ không tải hay cài lại. Điều này giúp tránh sự trùng lặp khi cài gói.

Tương tự, việc xóa gói đôi lúc chỉ xóa gói đó khỏi chỉ mục chứ không thực sự xóa nó khỏi ổ đĩa.

Nếu bạn muốn xóa những gói không cài trong môi trường nào, dùng lệnh gc.

Môi trường mặc định của Julia là môi trường có chứa tên phiên bản, đây sẽ là môi trường bạn sử dụng nhiều nhất cho việc nghiên cứu hay nháp. Nếu bạn đổi sang môi trường khác, bạn sẽ thấy phần trong ngoặc cũng thay đổi.

Để chuyển vào một môi trường, ta dùng lệnh activate (trong chế độ quán lí gói).

activate /đường/dẫn/tới/thư/mục

Để chuyển về môi trường mặc định, chúng ta sử dụng lệnh activate mà không truyền tham số vào.

Một số gói/module trong Julia

Mình chỉ giới thiệu một số thôi, chỗ này không phải tất cả nhé!

Một số module đi kèm trong Julia, không cần cài đặt (standard library):

TênChức năng
DatesLàm việc với thời gian
DistributedHỗ trợ tính toán song song
LibGit2Binding của một thư viện C để làm việc với Git
LibdlLàm việc với thư viện liên kết động
LinearAlgebraĐại số tuyến tính, svd, lu, trị riêng …
SparseArrayMa trận thưa thớt
SharedArraysDữ liệu được lưu trên vùng nhớ chung
SocketsLàm việc với Unix sockets
StatisticsCông cụ thống kê
TestUnit testing
ProfileProfile code

Một số gói do cộng đồng viết:

Tên góiChức năng
IJuliaDùng Julia với Jupyter notebook
DataFramesBảng dữ liệu
DistributionsCác loại phân phối xác suất
DataStructuresCác loại cấu trúc dữ liệu
DifferentialEquationsGiải các pt vi phân
JuMPCông cụ tối ưu
PlotsVẽ đồ thị (nhiều backend)
HTTP, Genie, MuxCông cụ làm Web App, Web API
CUDAnativeCông cụ cho CUDA
PyCallGọi python từ Julia
TensorFlowWrapper cho TensorFlow
ScikitLearnCài đặt lại hoàn toàn ScikitLearn trong Julia

Tạm kết

Trong bài viết này, chúng ta đã tìm hiểu về:

  1. Cách cài đặt, update, xem và xóa gói Julia
  2. Cách sử dụng các module trong Julia
  3. Làm việc với môi trường của gói
  4. Một số module và gói trong Julia

Trong bài viết sau, chúng ta sẽ học cách sử dụng Julia với Jupyter notebook hoặc Jupyter lab. Hẹn gặp lại các bạn.

Tham khảo thêm:


Hùng
Tác giả
Hùng
Hello, friend