构建你的 envd 环境
envd 通过读取 build.envd 文件中的配置来自动构建镜像。build.envd 是一个文本文件,其中包含所有用户能在命令行中调用以组装镜像的命令。
基础命令
envd build:从build.envd构建镜像。envd up:从build.envd构建镜像并立即运行。envd build/envd up --path/-p: 指定镜像的构建目录(指定目录下必须包含build.envd文件)。
# 在当前目录下构建镜像
$ ls
build.envd ...
$ envd build# 在自定义目录下构建镜像
$ tree .
./examples
└── mnist
├── build.envd
├── main.py
├── mnist.ipynb
└── README.md
$ envd build --path examples/mnistbuild.envd 示例
build.envd 使用 Starlark(Python3 的一种简化方言)语法编写,如果您了解 Python,那么您也可以毫无障碍编写 build.envd。
以下是 build.envd 的示例代码:
def build():
base(dev=True)
install.conda()
install.python()
install.python_packages(name = [
"numpy",
])
shell("zsh")
config.jupyter()别担心,我们将在以下部分探讨它是如何工作的。
Hello World
- 新建配置,创建
build.envd文件,输入以下代码:
def build():
base(dev=True)
install.conda()
install.python()- 运行环境,在控制台使用
envd up命令运行它。恭喜!您成功构建了第一个envd环境。
$ envd up
[+] ⌚ parse build.envd and download/cache dependencies 0.0s ✅ (finished)
[+] 🐋 build envd environment 7.9s (16/16) ✅ (finished)
...
=> exporting to oci image format 0.4s
=> => exporting layers 0.0s
=> => exporting manifest sha256:7ef2e8571485ce51d966b4cf5fe83232520f 0.0s
=> => exporting config sha256:abec960de30fce69dc19126577c7aaae3f9b62 0.0s
=> => sending tarball 0.4s
⬢ [envd]❯- 重新进入您的环境,如果您退出了当前
shell,使用ssh <project-directory-name>.envd命令将重新进入环境。
⬢ [envd]❯ exit
$ ssh demo.envd
⬢ [envd]❯ # 欢迎回来!- 删除环境,如果您不再使用它,请不要忘记使用
envd destroy命令来删除环境。使用-p参数指定要删除的环境的路径。
$ envd destroy -p .
INFO[2022-06-10T19:09:49+08:00] <project-directory-name> is destroyedbuild.envd
让我们来看一下 build.envd 文件。
def build():
base(dev=True)
install.conda()
install.python()build() 是 build.envd 中的主函数。当您运行 envd build 或 envd up命令时,envd 程序会调用该函数。
注意
build.envd 文件中必须包含 build() 函数。
base 将声明您在该环境中使用的操作系统和语言。
安装 Python 包
通过 envd install API 中的 install.python_packages 函数在环境中安装 Python 包:
def build():
base(dev=True)
install.conda()
install.python()
install.python_packages(name = [
"numpy",
])该函数支持通用 pip 语法:
install.python_packages(name = [
"numpy==1.4.1",
"numpy>=1,<2",
"numpy~=1.4",
])如果您遇到有关软件包安装的问题,请随时在 Discord 中与我们交流。您可以验证它是否工作:
$ envd up
⬢ [envd]❯ python3
Python 3.11.11 (main, Dec 11 2024, 16:28:39) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> a = np.array([2, 3, 4])
>>> a
array([2, 3, 4])配置 ZSH Shell
通过 envd API 中的 Shell 函数配置环境中的 Shell 程序:
def build():
base(dev=True)
install.conda()
install.python()
install.python_packages(name = [
"numpy",
])
shell("zsh")envd 自动配置 ZSH Shell 和 oh-my-zsh,无需您手动操作。
$ envd up
(envd) ➜ docs # 环境中的 ZSH shell使用 Jupyter Notebooks
Jupyter Notebook 是使用 Python 进行数据分析的互动计算环境。envd 通过 config.jupyter API 函数 帮助您在环境中配置 Jupyter Notebook。
def build():
base(dev=True)
install.conda()
install.python()
install.python_packages(name = [
"numpy",
])
shell("zsh")
config.jupyter()envd up 命令执行成功后,通过 envd envs list 查看 Jupyter Notebook 的地址。
$ envd up --detach
$ envd get env
NAME JUPYTER SSH TARGET CONTEXT IMAGE GPU CUDA CUDNN STATUS CONTAINER ID
envd-quick-start http://localhost:48484 envd-quick-start.envd /home/gaocegege/code/envd-quick-start envd-quick-start:dev false <none> <none> Up 54 seconds bd3f6a729e94
配置 PyPI 源(可选)
如果通过默认源安装 Python 包太过缓慢,请使用 envd API 函数 config.pip_index 配置新的 PyPI 源。
def build():
config.pip_index(url="https://pypi.tuna.tsinghua.edu.cn/simple")
base(dev=True)
install.conda()
install.python()
install.python_packages(name = [
"numpy",
])
shell("zsh")
config.jupyter()配置成功后,Python 包将从新的源下载,而不是 pypi.org。
更多 build.envd 示例
def build():
config.apt_source(source="""
deb https://mirror.sjtu.edu.cn/ubuntu focal main restricted
deb https://mirror.sjtu.edu.cn/ubuntu focal-updates main restricted
deb https://mirror.sjtu.edu.cn/ubuntu focal universe
deb https://mirror.sjtu.edu.cn/ubuntu focal-updates universe
deb https://mirror.sjtu.edu.cn/ubuntu focal multiverse
deb https://mirror.sjtu.edu.cn/ubuntu focal-updates multiverse
deb https://mirror.sjtu.edu.cn/ubuntu focal-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu focal partner
deb https://mirror.sjtu.edu.cn/ubuntu focal-security main restricted universe multiverse
""")
config.pip_index(url = "https://mirror.sjtu.edu.cn/pypi/web/simple")
install.vscode_extensions([
"ms-python.python",
])
base(dev=True)
install.conda()
install.python()
install.python_packages(name = [
"numpy",
])
install.cuda(version="11.2.2", cudnn="8")
shell("zsh")
install.apt_packages(name = [
"htop"
])
git_config(name="Ce Gao", email="cegao@tensorchord.ai", editor="vim")
run(["ls -la"])下一步
恭喜你已经成功配置好了 envd 环境!
如果你在使用本指南时遇到任何问题,请随时在 Discord 与我们交流。
如果你想进一步探索 envd ,以下是一些快速链接: