Skip to content

Commit 1fbc077

Browse files
author
committed
Deployed f0c457a with MkDocs version: 1.6.1
1 parent ef344ad commit 1fbc077

6 files changed

Lines changed: 299 additions & 115 deletions

File tree

safe-haven-services/open-ondemand/apps/jupyter-app/index.html

Lines changed: 92 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2701,6 +2701,30 @@
27012701
</span>
27022702
</a>
27032703

2704+
<nav class="md-nav" aria-label="Installing Python packages">
2705+
<ul class="md-nav__list">
2706+
2707+
<li class="md-nav__item">
2708+
<a href="#install-packages-within-a-mntjupyter_host-subdirectory" class="md-nav__link">
2709+
<span class="md-ellipsis">
2710+
Install packages within a /mnt/jupyter_host subdirectory
2711+
</span>
2712+
</a>
2713+
2714+
</li>
2715+
2716+
<li class="md-nav__item">
2717+
<a href="#create-a-virtual-environment-within-mntjupyter_host" class="md-nav__link">
2718+
<span class="md-ellipsis">
2719+
Create a virtual environment within /mnt/jupyter_host
2720+
</span>
2721+
</a>
2722+
2723+
</li>
2724+
2725+
</ul>
2726+
</nav>
2727+
27042728
</li>
27052729

27062730
<li class="md-nav__item">
@@ -2826,7 +2850,7 @@ <h2 id="sharing-files-between-the-back-end-and-jupyterlab-and-persisting-state-b
28262850
<p>The app also creates a <code>$HOME/.local/share/ondemand/apps/jupyter_app/</code> in your home directory on the back-end and mounts this into JupyterLab at <code>/mnt/jupyter_host</code>. If you create virtual environments and/or install Python packages into <code>/mnt/jupyter_host</code> when using JupyterLab, then these will be available to you when you run the app in future (each run of the app creates a new container, and this mount allows for state to be persisted between runs).</p>
28272851
<div class="admonition note">
28282852
<p class="admonition-title">Note</p>
2829-
<p>It is recommended that this directory be used for configuration files, code, scripts and Python packages only. It should <strong>not</strong> be used for data.</p>
2853+
<p>It is recommended that <code>/mnt/jupyter_host</code> be used for configuration files, code, scripts and Python packages only. It should <strong>not</strong> be used for data.</p>
28302854
</div>
28312855
<div class="admonition warning">
28322856
<p class="admonition-title">Warning</p>
@@ -2848,15 +2872,77 @@ <h2 id="accessing-files-outside-the-scope-of-your-home-directory">Accessing file
28482872
<div class="admonition tip">
28492873
<p class="admonition-title">Tip</p>
28502874
<p>A workaround to make these directories visible via JupyterLab file browsers is to create symbolic links from your home directory, within the container, to these directories. This can be done within a JupyterLab Terminal as follows:</p>
2851-
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>ln<span class="w"> </span>-s<span class="w"> </span>/safe_data/
2852-
<span class="gp">$ </span>ln<span class="w"> </span>-s<span class="w"> </span>/safe_outputs/
2853-
<span class="gp">$ </span>ln<span class="w"> </span>-s<span class="w"> </span>/scratch/
2854-
<span class="gp">$ </span>ln<span class="w"> </span>-s<span class="w"> </span>/mnt/jupyter_host<span class="w"> </span>lib
2875+
<div class="highlight"><pre><span></span><code>ln<span class="w"> </span>-s<span class="w"> </span>/safe_data/
2876+
ln<span class="w"> </span>-s<span class="w"> </span>/safe_outputs/
2877+
ln<span class="w"> </span>-s<span class="w"> </span>/scratch/
2878+
ln<span class="w"> </span>-s<span class="w"> </span>/mnt/jupyter_host<span class="w"> </span>lib
28552879
</code></pre></div>
28562880
</div>
28572881
<hr />
28582882
<h2 id="installing-python-packages">Installing Python packages</h2>
2859-
<p>JupyterLab is configured with your web proxy environment variables so you can install packages from PyPI when using JupyterLab. It is recommended that you create virtual environments and/or install Python packages into <code>/mnt/jupyter_host</code> so that you can reuse these the next time you run the app on the same back-end.</p>
2883+
<p>JupyterLab is configured with your web proxy environment variables so you can install packages from PyPI when using JupyterLab. It is recommended that you install Python packages and/or create virtual environments within <code>/mnt/jupyter_host</code> so that you can reuse these the next time you run the app on the same back-end.</p>
2884+
<p>There are a number of ways you can use such a directory within JupyterLab. Two examples are as follows. Python and JupyterLab resources online may suggest others.</p>
2885+
<h3 id="install-packages-within-a-mntjupyter_host-subdirectory">Install packages within a <code>/mnt/jupyter_host</code> subdirectory</h3>
2886+
<p>Install packages within a <code>/mnt/jupyter_host</code> subdirectory. For example:</p>
2887+
<ol>
2888+
<li>Select <strong>Launcher</strong>, <strong>Terminal</strong>.</li>
2889+
<li>
2890+
<p>Create directory for packages:</p>
2891+
<div class="highlight"><pre><span></span><code>mkdir<span class="w"> </span>-t<span class="w"> </span>/mnt/jupyter_host/mypips
2892+
</code></pre></div>
2893+
</li>
2894+
<li>
2895+
<p>Install package:</p>
2896+
<div class="highlight"><pre><span></span><code>pip<span class="w"> </span>install<span class="w"> </span>-t<span class="w"> </span>/mnt/jupyter_host/mypips<span class="w"> </span>PACKAGE_NAME
2897+
</code></pre></div>
2898+
</li>
2899+
</ol>
2900+
<p>Any Python code that needs the packages needs to include the path to the subdirectory. For example:</p>
2901+
<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
2902+
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;/mnt/jupyter_host/mypips&#39;</span><span class="p">)</span>
2903+
<span class="kn">import</span><span class="w"> </span><span class="nn">PACKAGE_NAME</span>
2904+
</code></pre></div>
2905+
<p>The subdirectory and packages will be persisted on the back-end upon which the app runs. For example:</p>
2906+
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>ls<span class="w"> </span><span class="nv">$HOME</span>/.local/share/ondemand/apps/jupyter_app/
2907+
mypips
2908+
$<span class="w"> </span>ls<span class="w"> </span><span class="nv">$HOME</span>/.local/share/ondemand/apps/jupyter_app/mypips/
2909+
...
2910+
PACKAGE_NAME
2911+
...
2912+
</code></pre></div>
2913+
<h3 id="create-a-virtual-environment-within-mntjupyter_host">Create a virtual environment within <code>/mnt/jupyter_host</code></h3>
2914+
<p>Create a virtual environment within <code>/mnt/jupyter_host</code> and install packages into that virtual environment. For example:</p>
2915+
<ol>
2916+
<li>Select <strong>Launcher</strong>, <strong>Terminal</strong>.</li>
2917+
<li>
2918+
<p>Create and activate a Python virtual environment:</p>
2919+
<div class="highlight"><pre><span></span><code>python<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>/mnt/jupyter_host/my-venv
2920+
<span class="nb">source</span><span class="w"> </span>/mnt/jupyter_host/my-venv/bin/activate
2921+
</code></pre></div>
2922+
</li>
2923+
<li>
2924+
<p>Install package into virtual environment:</p>
2925+
<div class="highlight"><pre><span></span><code>python<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>PACKAGE_NAME
2926+
</code></pre></div>
2927+
</li>
2928+
<li>
2929+
<p>Register the virtual environment with JupyterLab, to create new IPython kernels to provide access to the virtual environment within JupyterLab Notebook and Console sessions:</p>
2930+
<div class="highlight"><pre><span></span><code>python<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>ipykernel
2931+
python<span class="w"> </span>-m<span class="w"> </span>ipykernel<span class="w"> </span>install<span class="w"> </span>--user<span class="w"> </span>--name<span class="w"> </span>py3-ipykernel-my-venv<span class="w"> </span>--display-name<span class="w"> </span><span class="s1">&#39;Python3 (ipykernel my-venv)&#39;</span>
2932+
</code></pre></div>
2933+
</li>
2934+
</ol>
2935+
<div class="admonition note">
2936+
<p class="admonition-title">Note</p>
2937+
<p>The next time you run this app you will need to activate the virtual environment and recreate the kernels within a JupyterLab Terminal:</p>
2938+
<div class="highlight"><pre><span></span><code><span class="nb">source</span><span class="w"> </span>/mnt/jupyter_host/my-venv/bin/activate
2939+
python<span class="w"> </span>-m<span class="w"> </span>ipykernel<span class="w"> </span>install<span class="w"> </span>--user<span class="w"> </span>--name<span class="w"> </span>py3-ipykernel-my-venv<span class="w"> </span>--display-name<span class="w"> </span><span class="s1">&#39;Python3 (ipykernel my-venv)&#39;</span>
2940+
</code></pre></div>
2941+
</div>
2942+
<p>The virtual environment and its contents will be persisted on the back-end upon which the app runs. For example:</p>
2943+
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>ls<span class="w"> </span>.local/share/ondemand/apps/jupyter_app/
2944+
my-venv/
2945+
</code></pre></div>
28602946
<hr />
28612947
<h2 id="view-job-files">View job files</h2>
28622948
<p>On a job's job card, click the <strong>Session ID</strong> link to open the <a href="../../files/">File Manager</a>, pointing at the job context directory for the job on the Open OnDemand VM.</p>

safe-haven-services/open-ondemand/apps/jupyter-os-app/index.html

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2692,6 +2692,30 @@
26922692
</span>
26932693
</a>
26942694

2695+
<nav class="md-nav" aria-label="Installing Python packages">
2696+
<ul class="md-nav__list">
2697+
2698+
<li class="md-nav__item">
2699+
<a href="#install-packages-within-your-home-directory" class="md-nav__link">
2700+
<span class="md-ellipsis">
2701+
Install packages within your home directory
2702+
</span>
2703+
</a>
2704+
2705+
</li>
2706+
2707+
<li class="md-nav__item">
2708+
<a href="#create-a-virtual-environment-within-your-home-directory" class="md-nav__link">
2709+
<span class="md-ellipsis">
2710+
Create a virtual environment within your home directory
2711+
</span>
2712+
</a>
2713+
2714+
</li>
2715+
2716+
</ul>
2717+
</nav>
2718+
26952719
</li>
26962720

26972721
<li class="md-nav__item">
@@ -2821,12 +2845,56 @@ <h2 id="accessing-files-outside-the-scope-of-your-home-directory">Accessing file
28212845
<div class="admonition tip">
28222846
<p class="admonition-title">Tip</p>
28232847
<p>A workaround to make this directory visible via JupyterLab file browsers is to create symbolic links from your home directory to this directory. This can be done within a JupyterLab Terminal as follows:</p>
2824-
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>ln<span class="w"> </span>-s<span class="w"> </span>/safe_data/PROJECT_SUBDIRECTORY<span class="w"> </span>safe_data
2848+
<div class="highlight"><pre><span></span><code>ln<span class="w"> </span>-s<span class="w"> </span>/safe_data/PROJECT_SUBDIRECTORY<span class="w"> </span>safe_data
28252849
</code></pre></div>
28262850
</div>
28272851
<hr />
28282852
<h2 id="installing-python-packages">Installing Python packages</h2>
28292853
<p>JupyterLab is configured with your web proxy environment variables so you can install packages from PyPI when using JupyterLab.</p>
2854+
<p>If installing packages you may need to install these within your home directory. Two examples are as follows. Python and JupyterLab resources online may suggest others.</p>
2855+
<h3 id="install-packages-within-your-home-directory">Install packages within your home directory</h3>
2856+
<p>Install packages within a subdirectory of your home directory. For example:</p>
2857+
<ol>
2858+
<li>Select <strong>Launcher</strong>, <strong>Terminal</strong>.</li>
2859+
<li>
2860+
<p>Create directory for packages:</p>
2861+
<div class="highlight"><pre><span></span><code>mkdir<span class="w"> </span>-t<span class="w"> </span>mypips
2862+
</code></pre></div>
2863+
</li>
2864+
<li>
2865+
<p>Install package:</p>
2866+
<div class="highlight"><pre><span></span><code>pip<span class="w"> </span>install<span class="w"> </span>-t<span class="w"> </span>mypips<span class="w"> </span>PACKAGE_NAME
2867+
</code></pre></div>
2868+
</li>
2869+
</ol>
2870+
<p>Any Python code that needs the packages needs to include the path to the subdirectory. For example:</p>
2871+
<div class="highlight"><pre><span></span><code><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
2872+
<span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
2873+
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expanduser</span><span class="p">(</span><span class="s1">&#39;~&#39;</span><span class="p">),</span> <span class="s1">&#39;mypips&#39;</span><span class="p">))</span>
2874+
<span class="kn">import</span><span class="w"> </span><span class="nn">PACKAGE_NAME</span>
2875+
</code></pre></div>
2876+
<h3 id="create-a-virtual-environment-within-your-home-directory">Create a virtual environment within your home directory</h3>
2877+
<p>Create a virtual environment within your home directory and install packages into that virtual environment. For example:</p>
2878+
<ol>
2879+
<li>Select <strong>Launcher</strong>, <strong>Terminal</strong>.</li>
2880+
<li>
2881+
<p>Create and activate a Python virtual environment:</p>
2882+
<div class="highlight"><pre><span></span><code>python3<span class="w"> </span>-m<span class="w"> </span>venv<span class="w"> </span>my-venv
2883+
<span class="nb">source</span><span class="w"> </span>my-venv/bin/activate
2884+
</code></pre></div>
2885+
</li>
2886+
<li>
2887+
<p>Install package into virtual environment:</p>
2888+
<div class="highlight"><pre><span></span><code>python<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>PACKAGE_NAME
2889+
</code></pre></div>
2890+
</li>
2891+
<li>
2892+
<p>Register the virtual environment with JupyterLab, to create new IPython kernels to provide access to the virtual environment within JupyterLab Notebook and Console sessions:</p>
2893+
<div class="highlight"><pre><span></span><code>python<span class="w"> </span>-m<span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>ipykernel
2894+
python<span class="w"> </span>-m<span class="w"> </span>ipykernel<span class="w"> </span>install<span class="w"> </span>--user<span class="w"> </span>--name<span class="w"> </span>py3-ipykernel-my-venv<span class="w"> </span>--display-name<span class="w"> </span><span class="s1">&#39;Python3 (ipykernel my-venv)&#39;</span>
2895+
</code></pre></div>
2896+
</li>
2897+
</ol>
28302898
<hr />
28312899
<h2 id="view-job-files">View job files</h2>
28322900
<p>On a job's job card, click the <strong>Session ID</strong> link to open the <a href="../../files/">File Manager</a>, pointing at the job context directory for the job on the Open OnDemand VM.</p>

safe-haven-services/open-ondemand/apps/rstudio-app/index.html

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2701,6 +2701,21 @@
27012701
</span>
27022702
</a>
27032703

2704+
<nav class="md-nav" aria-label="Installing R packages">
2705+
<ul class="md-nav__list">
2706+
2707+
<li class="md-nav__item">
2708+
<a href="#install-packages-within-mntrstudio_host" class="md-nav__link">
2709+
<span class="md-ellipsis">
2710+
Install packages within /mnt/rstudio_host
2711+
</span>
2712+
</a>
2713+
2714+
</li>
2715+
2716+
</ul>
2717+
</nav>
2718+
27042719
</li>
27052720

27062721
<li class="md-nav__item">
@@ -2831,7 +2846,7 @@ <h2 id="sharing-files-between-the-back-end-and-rstudio-server-and-persisting-sta
28312846
<p>The app also creates a <code>$HOME/.local/share/ondemand/apps/rstudio_app/</code> in your home directory on the back-end and mounts this into RStudio Server at <code>/mnt/rstudio_host</code>. If you install R packages into <code>/mnt/rstudio_host</code> when using RStudio Server, then these will be available to you when you run the app in future (each run of the app creates a new container, and this mount allows for state to be persisted between runs).</p>
28322847
<div class="admonition note">
28332848
<p class="admonition-title">Note</p>
2834-
<p>It is recommended that this directory be used for configuration files, code, scripts and R packages only. It should <strong>not</strong> be used for data.</p>
2849+
<p>It is recommended that <code>/mnt/rstudio_host</code> be used for configuration files, code, scripts and R packages only. It should <strong>not</strong> be used for data.</p>
28352850
</div>
28362851
<div class="admonition warning">
28372852
<p class="admonition-title">Warning</p>
@@ -2854,15 +2869,30 @@ <h2 id="accessing-files-outside-the-scope-of-your-home-directory">Accessing file
28542869
<div class="admonition tip">
28552870
<p class="admonition-title">Tip</p>
28562871
<p>A workaround to make this directories visible via RStudio Server file browsers is to create symbolic links from your home directory, within the container, to these directories. This can be done within an RStudio Server Terminal as follows:</p>
2857-
<div class="highlight"><pre><span></span><code><span class="gp">$ </span>ln<span class="w"> </span>-s<span class="w"> </span>/safe_data/
2858-
<span class="gp">$ </span>ln<span class="w"> </span>-s<span class="w"> </span>/safe_outputs/
2859-
<span class="gp">$ </span>ln<span class="w"> </span>-s<span class="w"> </span>/scratch/
2860-
<span class="gp">$ </span>ln<span class="w"> </span>-s<span class="w"> </span>/mnt/rstudio_host<span class="w"> </span>lib
2872+
<div class="highlight"><pre><span></span><code>ln<span class="w"> </span>-s<span class="w"> </span>/safe_data/
2873+
ln<span class="w"> </span>-s<span class="w"> </span>/safe_outputs/
2874+
ln<span class="w"> </span>-s<span class="w"> </span>/scratch/
2875+
ln<span class="w"> </span>-s<span class="w"> </span>/mnt/rstudio_host<span class="w"> </span>lib
28612876
</code></pre></div>
28622877
</div>
28632878
<hr />
28642879
<h2 id="installing-r-packages">Installing R packages</h2>
28652880
<p>RStudio Server is configured with your web proxy environment variables so you can install packages from CRAN when using RStudio Server. It is recommended that you install R packages into <code>/mnt/rstudio_host</code> so that you can reuse these the next time you run the app on the same back-end.</p>
2881+
<p>There are a number of ways you can use such a directory within RStudio Server. One examples is as follows. R and RStudio Server resources online may suggest others.</p>
2882+
<h3 id="install-packages-within-mntrstudio_host">Install packages within <code>/mnt/rstudio_host</code></h3>
2883+
<p>Install packages within <code>/mnt/rstudio_host</code>. For example:</p>
2884+
<div class="highlight"><pre><span></span><code><span class="o">&gt;</span><span class="w"> </span><span class="nf">install.packages</span><span class="p">(</span><span class="s">&#39;PACKAGE_NAME&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">lib</span><span class="o">=</span><span class="s">&#39;/mnt/rstudio_host/&#39;</span><span class="p">)</span>
2885+
</code></pre></div>
2886+
<p>Any R code that needs the packages needs to include the path to the directory. For example:</p>
2887+
<div class="highlight"><pre><span></span><code><span class="o">&gt;</span><span class="w"> </span><span class="nf">.libPaths</span><span class="p">(</span><span class="s">&#39;/mnt/rstudio_host&#39;</span><span class="p">)</span>
2888+
<span class="o">&gt;</span><span class="w"> </span><span class="nf">find.package</span><span class="p">(</span><span class="s">&#39;PACKAGE_NAME&#39;</span><span class="p">)</span>
2889+
<span class="p">[</span><span class="m">1</span><span class="p">]</span><span class="w"> </span><span class="s">&quot;/mnt/rstudio_host/PACKAGE_NAME&quot;</span>
2890+
<span class="o">&gt;</span><span class="w"> </span><span class="nf">library</span><span class="p">(</span><span class="n">PACKAGE_NAME</span><span class="p">)</span>
2891+
</code></pre></div>
2892+
<p>Any packages will be visible on the back-end upon which the app runs. For example:</p>
2893+
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>ls<span class="w"> </span><span class="nv">$HOME</span>/.local/share/ondemand/apps/rstudio_app/
2894+
PACKAGE_NAME
2895+
</code></pre></div>
28662896
<hr />
28672897
<h2 id="view-job-files">View job files</h2>
28682898
<p>On a job's job card, click the <strong>Session ID</strong> link to open the <a href="../../files/">File Manager</a>, pointing at the job context directory for the job on the Open OnDemand VM.</p>

search/search_index.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)