# \[Jupyter\_Server\] Errno13 - Permission Denied While Setting Up

**URL:** <https://discourse.jupyter.org/t/jupyter-server-errno13-permission-denied-while-setting-up/14976>\
**Category:** JupyterHub\
**Created:** [July 18, 2022, 3:52pm UTC](https://discourse.jupyter.org/t/jupyter-server-errno13-permission-denied-while-setting-up/14976 "2022-07-18T15:52:58Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Duc\_Nguyen](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/duc_nguyen/32/7550_2.png) [@Duc\_Nguyen](https://discourse.jupyter.org/u/Duc_Nguyen)\
**Post date:** [July 18, 2022, 3:52pm UTC](https://discourse.jupyter.org/t/jupyter-server-errno13-permission-denied-while-setting-up/14976/1 "2022-07-18T15:52:58Z")

</div>

Hi,

My computer does not have the internet at my workplace, so I have to install jupyer\_server offline by .whl file. But I get an error: “Errno13 Permission Denied” while installing.

The error happen when writing a file:  
C:\Users\NGUYEN DUY DUC\AppData\Local\Programs\Python\Python39\Lib\site-packages\jupyter\_server\i18n\nbui.pot

How do fix this problem? Help me.

Thanks

---

<div class="post-metadata">

**Author:** ![bollwyvl](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/bollwyvl/32/904_2.png) [@bollwyvl](https://discourse.jupyter.org/u/bollwyvl)\
**Post date:** [July 18, 2022, 5:13pm UTC](https://discourse.jupyter.org/t/jupyter-server-errno13-permission-denied-while-setting-up/14976/2 "2022-07-18T17:13:07Z")

</div>

Windows isn’t a lot of fun: for example, paths:

- even if this gets figured out, that base path looks long.
- open source scientific computing often has trouble with spaces in the install path

My recommendation, borne of years of pain, for managing repeatable, usable offline python (but specifically jupyter) enviornments is to rely on `conda` and `constructor`:

- when connected to the internet:
  - get a [Miniforge](https://github.com/conda-forge/miniforge) installer
    - install it someplace as _short_ as possible, e.g. `c:\mf`
      - create this, empty, folder with File Explorer _before_ running the installer
        - all windows on users can create folders in `c:\`

    - in a `cmd.exe`, activate that with `c:\mf\scripts\activate`
      - in the that base environment, install [`conda install constructor`](https://github.com/conda/constructor)
      - write a `construct.yaml` describing the enviroment you want
        - [spec](https://github.com/conda/constructor/blob/8046baf3a041786c9b6a6419397fea661b3a70d8/CONSTRUCT.md)
        - [examples](https://github.com/conda/constructor/tree/master/examples)
        - the [jupyterlab-desktop](https://github.com/jupyterlab/jupyterlab-desktop/blob/bf92c42fb3baf9e350031474c245e58c681bda8c/env_installer/construct.yaml) construct is also quite useful for reference
        - the `miniforge` construct itself has some [useful stuff](https://github.com/conda-forge/miniforge/blob/c8a2703a3a44b044565bf4376d0580eab272e48f/Miniforge3/construct.yaml#L35), like `miniforge_console_shortcut` for getting an activated prompt

  - check in that description
  - build the installer

- bring that installer to the offline computer
  - install it someplace short, e.g. `c:\myf`
    - again, ensure the folder exists before running the installer

  - activate it there

The upside of this approach:

- you really only have to write one file, `construct.yaml`
- no special permissions are required
- this installer will perfectly reproduce the environment, even years in the future

The down side:

- everything has to be in conda(-forge)
  - pretty much all of the jupyter stack, and most of the python scienitific computing stack, NLP/AI/ML stuff, is available there
    - even a lof of the `r` ecosystem is available there

- this installer will perfectly reproduce the environment, even years in the future
  - if there have been major vulnerabilities discovered, there’s no way to avoid installing them
    - but you’re offline, so the risk is low

- these are big, and slow to build
  - installers can easily be larger than 1GB (all it really takes is `numpy` and `matplotlib` to drag along `qt` and `mkl`)
    - this is seldom a problem these days, with 16gb USB sticks cheaper than a cup of coffee
