构建 Anaconda Navigator 应用程序


本教程将构建 JupyterLab 的 Anaconda Navigator 应用程序(应用程序)。

需要对构建配方中的文件进行三处修改才能将包声明为应用程序。然后,我们将使用这些配方修改来构建 JupyterLab。构建包后,我们会将其上传到 Anaconda.org 频道。最后,在 Anaconda Navigator 中添加频道后,该应用程序将出现在“主页”窗格中。

这是给谁的?

本教程适用于希望从给定配方生成 Anaconda Navigator 应用程序 conda 包的 Windows、macOS 和 Linux 用户。建议先了解 conda-build 或 conda 配方。

开始之前

笔记

为 Anaconda Navigator 构建的应用程序应该有一个图形用户界面。并非所有 conda 包都具有图形界面。

您应该已经安装了 Miniconda 或 Anaconda。安装 conda-build:

conda install conda-build

建议您使用最新版本的 conda 和 conda-build。要升级这两个软件包,请运行:

conda upgrade conda
conda upgrade conda-build

您还需要在 Anaconda.org 上有一个帐户。您的用户名将被称为您的 Anaconda.org 频道。

使用配方

首先,创建一个名为 jupyterlab 的新目录,然后切换到新目录:

mkdir jupyterlab
cd jupyterlab

通过打开文本文件创建配方并将其命名为 meta.yaml。从原料复制配方:

{% set version = "1.2.4" %}
{% set sha256 = "6adb88acd05b51512c37df477a18c36240823a591c2a51bf6556198414026d8f" %}


package:
    name: jupyterlab
    version: {{ version }}

source:
    fn: jupyterlab-{{ version }}.tar.gz
    url: https://pypi.io/packages/source/j/jupyterlab/jupyterlab-{{ version }}.tar.gz
    sha256: {{ sha256 }}
build:
    noarch: python
    number: 0
    script: {{ PYTHON }} -m pip install --install-option="--skip-npm" . -vv
    entry_points:
        - jupyter-lab = jupyterlab.labapp:main
        - jupyter-labextension = jupyterlab.labextensions:main
        - jupyter-labhub = jupyterlab.labhubapp:main
        - jlpm = jupyterlab.jlpmapp:main

app:
    entry: jupyter lab
    icon: icon.png
    summary: JupyterLab PRE-ALPHA
    type: desk

requirements:
    host:
        - python >=3.5
        - pip
        - nodejs >=8
    run:
        - python >=3.5
        - jupyterlab_server >=1.0.0,<2.0.0
        - notebook >=4.3.1
        - tornado !=6.0.0,!=6.0.1,!=6.0.2
        - jinja2 >=2.10
test:
    requires:
        - nodejs
    imports:
        - jupyterlab
    commands:
        - jupyter lab --version
        - jlpm --version
        - jlpm versions
        - jupyter labextension list
        - jupyter lab path
        - jupyter lab build
        - jupyter lab clean

about:
    home: https://github.com/jupyterlab/jupyterlab
    license: BSD-3-Clause
    license_family: BSD
    license_file: LICENSE
    summary: >
        An extensible environment for interactive and reproducible computing, based
        on the Jupyter Notebook and Architecture.
    doc_url: https://jupyterlab.readthedocs.io
    dev_url: https://github.com/jupyterlab/jupyterlab
    description: >
        JupyterLab is the next-generation user interface for Project Jupyter. It
        offers all the familiar building blocks of the classic Jupyter Notebook
        (notebook, terminal, text editor, file browser, rich outputs, etc.) in a
        flexible and powerful user inteface. Eventually, JupyterLab will replace
        the classic Jupyter Notebook.
        JupyterLab can be extended using extensions that are npm packages and use
        our public APIs. You can search for the GitHub topic or npm keyword
        `jupyterlab-extension` to find extensions. To learn more about extensions,
        see our user documentation.
        JupyterLab is suitable for general usage. For JupyterLab extension
        developers, the extension APIs will continue to evolve.
extra:
    recipe-maintainers:
        - jasongrout
        - blink1073
        - jochym
        - ian-r-rose
        - afshin
        - ellisonbg

构建架构

给定的配方是一个 noarch 配方。这与旧版本的 Navigator 不兼容。在构建部分下,删除.noarch: python

meta.yaml 中的应用入口

要将 conda 包声明为应用程序,必须将 app 参数添加到 meta.yaml 文件中。应用程序部分将包含三个键:条目、摘要和类型。对于 JupyterLab 配方,将 meta.yaml 中的 app 部分替换为以下值。

在 app 部分,入口标签定义了 Anaconda Navigator 如何启动包。对于 JupyterLab,Windows、macOS 和 Linux 操作系统需要单独的条目标签。

在您的文本编辑器中,打开 meta.yaml 文件并添加以下行。在 Windows 和 Linux 上,入口标签是:

app:
 entry: jupyterlab .                                 [win]

 entry: jupyterlab .                                 [linux]

启动脚本

对于 macOS,还必须提供启动脚本。在文本编辑器中,在 conda-build recipe 目录中创建一个名为 jupyterlab_mac.command 的新文件。这个文件的内容是:

DIR=$(dirname $0)
$DIR/jupyter-lab ${HOME}

Build.sh 脚本

为了确保文件被安装,在与 meta.yaml 相同的目录中创建一个新文件。将其命名为 build.sh 并将这些行添加到 build.sh 脚本中:

$PYTHON  -m pip install . --no-deps --ignore-installed -vv
if [ `uname` == Darwin ]

then
    cp $RECIPE_DIR/jupyterlab_mac.command $PREFIX/bin

fi

删除 meta.yaml 中 build 部分下的脚本键。

编译.bat

创建一个名为 build.bat 的新文件。包括以下这些:

%PYTHON% -m pip install . --no-deps --ignore-installed -vv

进入键

然后在 meta.yaml 中,将此行添加到 app 部分:

完成的应用程序部分应如下所示:

笔记

应用程序图标默认为 Anaconda 徽标。

构建

现在您已准备好 conda-build 配方,您可以使用 conda-build 工具来创建包。您必须在 Windows、macOS 和 Linux 机器上分别构建和上传 JupyterLab 包,以便该包在所有平台上可用。如果您已经在 J​​upyterLab 目录中,则可以在终端中输入。否则输入.conda build .conda-build jupyterlab

当 conda-build 完成时,它会显示 conda 包的确切路径和文件名。 如果 conda-build 命令失败,请参阅故障排除部分。

Windows 示例文件路径: C:\Users\username\miniconda\conda-bld\win-64\jupyterlab-1.2.4-py38_0.tar.bz2

macOS 示例文件路径: /Users/username/anaconda3/conda-bld/osx-64/jupyterlab-1.2.4-py38_0.tar.bz2

Linux 示例文件路径: /home/username/miniconda/conda-bld/linux-64/bjupyterlab-1.2.4-py38_0.tar.bz2

笔记

路径和文件名将根据您的安装和操作系统而有所不同。

为下一步保存路径和文件名信息。

上传到 Anaconda.org

现在您可以将新的本地包上传到 Anaconda.org。首先,从终端登录到 Anaconda.org: anaconda login

系统会要求您提供 Anaconda.org 帐户名和密码。如果登录成功,您将看到如下输出:

笔记

此步骤必须在 root conda 环境中完成。

现在您已登录您的频道,您可以按如下方式上传 JupyterLab conda 包:

视窗用户: anaconda upload C:\Users\username\miniconda\conda-bld\win-64\jupyterlab-1.2.4-py38_0.tar.bz2

Linux 和 macOS 用户: anaconda upload /Users/username/miniconda/conda-bld/osx-64/jupyterlab-1.2.4-py38_0.tar.bz2

笔记

将您的用户名、路径和文件名更改为您在步骤 2 中保存的确切用户名、路径和文件名。这些将因您的安装和操作系统而异。

有关 Anaconda.org 的更多信息,请参阅 Anaconda.org 文档页面。

配置 Anaconda 导航器

现在 JupyterLab 包已上传到您的 Anaconda.org 频道,您需要将该频道添加到 Anaconda Navigator。

  1. 启动 Anaconda Navigator 应用程序。在 Windows 和 Linux 中,它可以从“开始”菜单中使用。在 macOS 上,您可以在桌面上或通过 Spotlight 找到它。

  2. 打开最左侧的环境窗格。

  3. 要添加您的频道,请先单击“频道”按钮。其次,单击添加按钮。第三,输入 Anaconda.org 频道的 URL:https : //conda.anaconda.org/channel

    笔记

    将“频道”替换为您的 Anaconda.org 用户名。

  4. 按 Enter 并选择更新频道。

    ../../../../_images/add-channel.png
  5. 关闭并重新启动 Anaconda Navigator。JupyterLab 应用程序将显示在“主页”窗格中。

故障排除

A. Conda 构建失败

如果 conda 配方无法构建,请参阅故障排除指南。

B. 应用程序没有出现在主面板上

检查 conda 包是否已上传到您的 Anaconda.org 频道。检查您的频道是否已添加到频道列表中。

您可能必须删除 .anaconda/navigator 目录并重新启动 Navigator。该目录位于您的主目录中。

C. 应用程序不启动

如果安装应用程序后它没有启动,请使用以下命令在命令行上检查它是否正常工作: conda run jupyterlab

如果 JupyterLab 正确启动,则您可能必须删除 .anaconda/navigator 目录并重新启动 Navigator。该目录位于您的主目录中。

附加信息

有关在 Windows 中添加开始菜单条目的更多信息,请参阅 menuinst文档。