curl https://get.modular.com | \
MODULAR_AUTH=mut_0bf0c9a30672479aaaf18a7af8817040 \
sh -
https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vscode-mojo
https://docs.modular.com/mojo/manual/get-started/hello-world.html
Mojo 尚不適用于 Apple 芯片,但您可以在 遠程 Linux 系統.以下是使用 GitHub Codespaces 執行此操作的一種方法:
https://github.com/modularml/mojo/tree/main/examples
VS Code:https://code.visualstudio.com/
Mojo:https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vscode-mojo
GitHub Codespaces 擴展:https://marketplace.visualstudio.com/items?itemName=GitHub.codespaces
curl https://get.modular.com | \
MODULAR_AUTH=mut_0bf0c9a30672479aaaf18a7af8817040 \
sh -
modular install mojo
https://docs.modular.com/mojo/manual/get-started/hello-world.html
Mojo 尚不適用于英特爾 Mac,但您可以在 Linux 容器或遠程系統.以下是使用 Docker 執行此操作的一種方法:
https://docs.docker.com/desktop/install/mac-install/
VS Code:https://code.visualstudio.com/
Mojo:https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vscode-mojo
開發容器擴展:https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers
curl https://get.modular.com | \
MODULAR_AUTH=mut_0bf0c9a30672479aaaf18a7af8817040 \
sh -
modular install mojo
https://docs.modular.com/mojo/manual/get-started/hello-world.html
Mojo 尚不適用于 Windows,但您可以在 Linux 容器或遠程系統.下面是使用 WSL 執行此操作的一種方法:
VS Code:https://code.visualstudio.com/
WSL :https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl
Mojo 擴展:https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vscode-mojo
https://apps.microsoft.com/store/detail/ubuntu-22042-lts/9PN20MSR04DW
curl https://get.modular.com | \
MODULAR_AUTH=mut_0bf0c9a30672479aaaf18a7af8817040 \
sh -
modular install mojo
code .
https://docs.modular.com/mojo/manual/get-started/hello-world.html
1、特定于發行版的設置 - 首先選擇要安裝的操作系統:Ubuntu 20.04 及更高版本
apt-get install -y apt-transport-https &&
keyring_location=/usr/share/keyrings/modular-installer-archive-keyring.gpg &&
curl -1sLf 'https://dl.modular.com/bBNWiLZX5igwHXeu/installer/gpg.0E4925737A3895AD.key' | gpg --dearmor >> ${keyring_location} &&
curl -1sLf 'https://dl.modular.com/bBNWiLZX5igwHXeu/installer/config.deb.txt?distro=debian&codename=wheezy' > /etc/apt/sources.list.d/modular-installer.list &&
apt-get update &&
apt-get install -y modular
2、安裝 Mojo
如果軟件包是手動安裝的,您還需要手動執行身份驗證,例如:
#挑戰30天在頭條寫日記#
Mojo 是一種新的編程語言,它通過將最好的 Python 語法與系統編程和元編程相結合,彌合了研究和生產之間的差距。借助 Mojo,您可以編寫比 C 更快的可移植代碼,并與 Python 生態系統無縫互操作。
Mojo 現在可用于本地開發!
Mojo SDK 目前可用于 Ubuntu Linux 系統,并且即將推出對 Windows 和 macOS 的支持。在此之前,我們的設置指南包括有關如何使用容器或遠程 Linux 系統從 Windows 或 macOS 進行開發的說明。或者,您也可以使用我們基于網絡的Mojo Playground來嘗試 Mojo 。
Mojo SDK 包含本地 Mojo 開發所需的一切,包括 Mojo 標準庫和Mojo 命令行界面(CLI)。Mojo CLI可以啟動REPL編程環境、編譯和運行Mojo源文件、格式?化源文件等。
我們還發布了Visual Studio Code 的 Mojo 擴展,以提供一流的開發人員體驗,包括代碼完成、快速修復和 Mojo API 的懸停幫助等功能。
要使用 Mojo SDK,您需要一個滿足以下規范的系統:
未來版本中將添加對 Windows 和 macOS 的支持。
Mojo SDK 可通過Modular CLI 工具獲得,該工具類似于包管理器來安裝和更新 Mojo。使用以下鏈接登錄 Modular 開發人員控制臺,您可以在其中獲取 Modular CLI,然后安裝 Mojo:
獲取 Mojo SDK
然后開始你好,世界!
注意:為了幫助我們改進 Mojo,我們收集了一些基本系統信息和崩潰報告。了解更多。
Mojo 是一項正在進行的工作,我們將定期發布 Mojo 語言和 SDK 工具的更新。有關每個版本的信息,請參閱Mojo 變更日志。
要檢查您當前的 Mojo 版本,請使用以下--version選項:
mojo --version
要更新到最新的 Mojo 版本,請使用以下modular update命令:
modular update mojo
我們還可能發布該modular工具的更新,該工具作為 Debian 軟件包安裝(目前僅適用于 Linux),因此您可以像這樣更新它:
sudo apt update
sudo apt install modular
您還可以在我們托管的 Jupyter 筆記本環境(稱為 Mojo Playground)中試驗 Mojo,而不是下載 Mojo SDK。這是JupyterLab的托管版本,運行我們最新的 Mojo 內核。
要獲得訪問權限,只需在此處登錄 Mojo Playground即可。
Mojo 提供了一個打包系統,允許您將代碼庫組織和編譯為可導入文件。本頁介紹了有關如何將代碼組織成模塊和包(這很像 Python)的必要概念,并向您展示如何使用命令創建打包的二進制文件mojo package。
要了解 Mojo 包,您首先需要了解 Mojo 模塊。Mojo 模塊是單個 Mojo 源文件,其中包含適合導入它的其他文件使用的代碼。例如,您可以創建一個模塊來定義如下所示的結構:
mymodule.mojo
struct MyPair:
var first: Int
var second: Int
fn __init__(inout self, first: Int, second: Int):
self.first=first
self.second=second
fn dump(self):
print(self.first, self.second)
請注意,這段代碼沒有任何main()功能,因此無法執行mymodule.mojo。但是,您可以將其導入到另一個具有main()函數的文件中并在那里使用它。
例如,以下是如何導入MyPair名為 的文件main.mojo,該文件與 位于同一目錄中mymodule.mojo:
主要mojo
from mymodule import MyPair
fn main():
let mine=MyPair(2, 4)
mine.dump()
或者,您可以導入整個模塊,然后通過模塊名稱訪問其成員。例如:
主要mojo
import mymodule
fn main():
let mine=mymodule.MyPair(2, 4)
mine.dump()
您還可以使用 為導入的成員創建別名as,如下所示:
主要mojo
import mymodule as my
fn main():
let mine=my.MyPair(2, 4)
mine.dump()
在此示例中,僅當mymodule.mojo與 位于同一目錄中時才有效main.mojo。.mojo目前,如果文件駐留在其他目錄中,則無法將它們作為模塊導入。也就是說,除非您將目錄視為 Mojo 包,如下一節所述。
注意: Mojo 模塊可能包含一個main()函數,也可能是可執行的,但這通常不是實踐,模塊通常包含要在其他 Mojo 程序中導入和使用的 API。
Mojo 包只是包含文件的目錄中 Mojo 模塊的集合__init__.mojo。通過將模塊組織在一個目錄中,您可以一起或單獨導入所有模塊。或者,您還可以將包編譯為更易于共享的.mojopkg或文件。.
.mojopkg您可以直接從源文件或編譯的/文件導入包及其模塊.。使用哪種方式導入包對于 Mojo 來說并沒有真正的區別。從源文件導入時,目錄名稱用作包名稱,而從編譯包導入時,文件名是包名稱(您使用命令指定 - 它可以與目錄mojo package名稱不同)。
例如,考慮一個包含以下文件的項目:
main.mojo
mypackage/
__init__.mojo
mymodule.mojo
mymodule.mojo與上面示例中的代碼相同(帶有MyPair結構)并且__init__.mojo為空。
在這種情況下,main.mojo文件現在可以MyPair通過包名稱導入,如下所示:
主要mojo
from mypackage.mymodule import MyPair
fn main():
let mine=my.MyPair(2, 4)
mine.dump()
請注意,__init__.mojo這里至關重要。如果刪除它,Mojo 不會將該目錄識別為包,并且無法導入mymodule.
然后,假設您不希望mypackage源代碼與main.mojo. 因此,您可以將其編譯成如下的包文件:
mojo package mypackage -o mypack.mojopkg
然后mypackage源可以移動到其他地方,項目文件現在如下所示:
main.mojo
mypack.mojopkg
因為我們對包文件的命名與目錄不同,所以我們需要修復 import 語句,它的工作原理是一樣的:
主要mojo
from mypack.mymodule import MyPair
注意:如果要重命名包,則不能簡單地編輯.mojopkg或.文件名,因為包名稱已編碼在文件中。您必須mojo package再次運行才能指定新名稱。
如上所述,該__init__.mojo文件需要指示一個目錄應被視為 Mojo 包,并且可以為空。
目前,文件中不支持頂級代碼.mojo,因此與 Python 不同,您無法編寫在__init__.mojo導入時執行的代碼。但是,您可以添加結構體和函數,然后可以從包名稱中導入它們。
但是,您可以導入模塊成員,而不是在文件中添加 API __init__.mojo,這通過使您的 API 可以從包名稱訪問而不需要符號來達到相同的效果<package_name>.<module_name>。
例如,再次假設您有這些文件:
main.mojo
mypackage/
__init__.mojo
mymodule.mojo
現在讓我們在中添加以下行__init__.mojo:
__init__.mojo
from .mymodule import MyPair
這就是里面的全部內容。現在,我們可以像這樣簡化 import 語句main.mojo:
主要mojo
from mypackage import MyPair
此功能解釋了為什么 Mojo 標準庫中的某些成員可以從其包名稱導入,而其他成員則需要符號<package_name>.<module_name>。例如,functional模塊駐留在algorithm包中,因此您可以map()像這樣導入該模塊的成員(例如函數):
from algorithm.functional import map
但是,該algorithm/__init__.mojo文件還包含以下行:
算法/__init__.mojo
from .functional import *
from .reduction import *
因此,您實際上可以從包中導入任何內容functional,或者reduction只需命名包即可。也就是說,您可以functional從 import 語句中刪除名稱,它也可以工作:
from algorithm import map
https://github.com/modularml/mojo