oauthenticator.awscognito.AWSCognitoAuthenticator could not be imported

I have 2 side-by-side ubuntu servers (EC2).

On one, I followed the vanilla install instructions, including SSL and Cognito integration, and it works as expected.

On the other, I did the same thing, except that the machine was already setup with python and a conda environment.

In the latter, when I try to use Cognito for authentication (specified below), I get this error:

python3[86637]: [C 2021-11-22 12:03:19.200 JupyterHub application:90] Bad config encountered during initialization: The ‘authenticator_class’ trait of <main.JupyterHub object at 0x7f28f60dcb50> instance must be a type, but ‘oauthenticator.awscognito.AWSCognitoAuthenticator’ could not be imported

Here’s how I setup the SSL and cognito integration:

sudo tljh-config set https.enabled true
sudo tljh-config set https.letsencrypt.emal me@me.com
sudo tljh-config add-item https.letsencrypt.domains
sudo tljh-config add-item https.letsencrypt.domains
sudo tljh-config reload proxy

create conf file:

sudo vi /etc/systemd/system/jupyterhub.service.d/jupyterhub.conf

With these contents:
[Service]
Environment=AWSCOGNITO_DOMAIN=

#create awscognito.py
sudo vi /opt/tljh/config/jupyterhub_config.d/awscognito.py

with these contents:
##############################################
Setup aws Cognito Authenticator
##############################################
AWSCognitoAuthenticator.client_id=‘abc’
AWSCognitoAuthenticator.client_secret=‘xyz’
AWSCognitoAuthenticator.oauth_callback_url=’’
AWSCognitoAuthenticator.username_key=‘email’
AWSCognitoAuthenticator.oauth_logout_redirect_url=’’

These instructions alone worked for the server that didn’t have conda and python setup in advance.

I also tried this, but everything was already installed:

pip install -U oauthenticator

I also tried updating the symlinks for python and pip under the the tljh install to point at the conda python installation - also to no avail.

Note that the first instance was installed several weeks ago, and is on python version 3.6.9 and the latter is on python version 3.8.8

Can anyone help me understand what I’m missing here?

<note that the forum tool stripped some of the content of the original post above, but I’m sure the config values are correct in as far as they are the same as the first server, which works>

My guess is that you’ve installed something into the wrong environment. Can you run conda list and pip list in all of your environments?

From the machine having issues:

(base) ubuntu@my-machine:~$ conda list

packages in environment at /home/ubuntu/anaconda3:

Name Version Build Channel

_ipyw_jlab_nb_ext_conf 0.1.0 py38_0
_libgcc_mutex 0.1 main
alabaster 0.7.12 pyhd3eb1b0_0
alembic 1.7.5 pypi_0 pypi
anaconda 2021.05 py38_0
anaconda-client 1.7.2 py38_0
anaconda-navigator 2.0.3 py38_0
anaconda-project 0.9.1 pyhd3eb1b0_1
anyio 2.2.0 py38h06a4308_1
appdirs 1.4.4 py_0
argh 0.26.2 py38_0
argon2-cffi 20.1.0 py38h27cfd23_1
asn1crypto 1.4.0 py_0
astroid 2.5 py38h06a4308_1
astropy 4.2.1 py38h27cfd23_1
async_generator 1.10 pyhd3eb1b0_0
atomicwrites 1.4.0 py_0
attrs 20.3.0 pyhd3eb1b0_0
autopep8 1.5.6 pyhd3eb1b0_0
babel 2.9.0 pyhd3eb1b0_0
backcall 0.2.0 pyhd3eb1b0_0
backports 1.0 pyhd3eb1b0_2
backports.functools_lru_cache 1.6.4 pyhd3eb1b0_0
backports.shutil_get_terminal_size 1.0.0 pyhd3eb1b0_3
backports.tempfile 1.0 pyhd3eb1b0_1
backports.weakref 1.0.post1 py_1
beautifulsoup4 4.9.3 pyha847dfd_0
bitarray 2.1.0 py38h27cfd23_1
bkcharts 0.2 py38_0
black 19.10b0 py_0
blas 1.0 mkl
bleach 3.3.0 pyhd3eb1b0_0
blosc 1.21.0 h8c45485_0
bokeh 2.3.2 py38h06a4308_0
boto 2.49.0 py38_0
bottleneck 1.3.2 py38heb32a55_1
brotlipy 0.7.0 py38h27cfd23_1003
bzip2 1.0.8 h7b6447c_0
c-ares 1.17.1 h27cfd23_0
ca-certificates 2021.4.13 h06a4308_1
cairo 1.16.0 hf32fb01_1
certifi 2020.12.5 py38h06a4308_0
certipy 0.1.3 pypi_0 pypi
cffi 1.14.5 py38h261ae71_0
chardet 4.0.0 py38h06a4308_1003
click 7.1.2 pyhd3eb1b0_0
cloudpickle 1.6.0 py_0
clyent 1.2.2 py38_1
colorama 0.4.4 pyhd3eb1b0_0
conda 4.10.1 py38h06a4308_1
conda-build 3.21.4 py38h06a4308_0
conda-content-trust 0.1.1 pyhd3eb1b0_0
conda-env 2.6.0 1
conda-package-handling 1.7.3 py38h27cfd23_1
conda-repo-cli 1.0.4 pyhd3eb1b0_0
conda-token 0.3.0 pyhd3eb1b0_0
conda-verify 3.4.2 py_1
contextlib2 0.6.0.post1 py_0
cryptography 3.4.7 py38hd23ed53_0
curl 7.71.1 hbc83047_1
cycler 0.10.0 py38_0
cython 0.29.23 py38h2531618_0
cytoolz 0.11.0 py38h7b6447c_0
dask 2021.4.0 pyhd3eb1b0_0
dask-core 2021.4.0 pyhd3eb1b0_0
dbus 1.13.18 hb2f20db_0
decorator 5.0.6 pyhd3eb1b0_0
defusedxml 0.7.1 pyhd3eb1b0_0
diff-match-patch 20200713 py_0
distributed 2021.4.1 py38h06a4308_0
docutils 0.17.1 py38h06a4308_1
ecdsa 0.17.0 pypi_0 pypi
entrypoints 0.3 py38_0
et_xmlfile 1.0.1 py_1001
expat 2.3.0 h2531618_2
fastcache 1.1.0 py38h7b6447c_0
filelock 3.0.12 pyhd3eb1b0_1
flake8 3.9.0 pyhd3eb1b0_0
flask 1.1.2 pyhd3eb1b0_0
flask-awscognito 1.3 pypi_0 pypi
fontconfig 2.13.1 h6c09931_0
freetype 2.10.4 h5ab3b9f_0
fribidi 1.0.10 h7b6447c_0
fsspec 0.9.0 pyhd3eb1b0_0
future 0.18.2 py38_1
get_terminal_size 1.0.0 haa9412d_0
gevent 21.1.2 py38h27cfd23_1
glib 2.68.1 h36276a3_0
glob2 0.7 pyhd3eb1b0_0
gmp 6.2.1 h2531618_2
gmpy2 2.0.8 py38hd5f6e3b_3
graphite2 1.3.14 h23475e2_0
greenlet 1.0.0 py38h2531618_2
gst-plugins-base 1.14.0 h8213a91_2
gstreamer 1.14.0 h28cd5cc_2
h5py 2.10.0 py38h7918eee_0
harfbuzz 2.8.0 h6f93f22_0
hdf5 1.10.4 hb1b8bf9_0
heapdict 1.0.1 py_0
html5lib 1.1 py_0
icu 58.2 he6710b0_3
idna 2.10 pyhd3eb1b0_0
imageio 2.9.0 pyhd3eb1b0_0
imagesize 1.2.0 pyhd3eb1b0_0
importlib-metadata 3.10.0 py38h06a4308_0
importlib-resources 5.4.0 pypi_0 pypi
importlib_metadata 3.10.0 hd3eb1b0_0
iniconfig 1.1.1 pyhd3eb1b0_0
intel-openmp 2021.2.0 h06a4308_610
intervaltree 3.1.0 py_0
ipykernel 5.3.4 py38h5ca1d4c_0
ipython 7.22.0 py38hb070fc8_0
ipython_genutils 0.2.0 pyhd3eb1b0_1
ipywidgets 7.6.3 pyhd3eb1b0_1
isort 5.8.0 pyhd3eb1b0_0
itsdangerous 1.1.0 pyhd3eb1b0_0
jbig 2.1 hdba287a_0
jdcal 1.4.1 py_0
jedi 0.17.2 py38h06a4308_1
jeepney 0.6.0 pyhd3eb1b0_0
jinja2 2.11.3 pyhd3eb1b0_0
joblib 1.0.1 pyhd3eb1b0_0
jpeg 9b h024ee3a_2
json5 0.9.5 py_0
jsonschema 3.2.0 py_2
jupyter 1.0.0 py38_7
jupyter-packaging 0.7.12 pyhd3eb1b0_0
jupyter-telemetry 0.1.0 pypi_0 pypi
jupyter_client 6.1.12 pyhd3eb1b0_0
jupyter_console 6.4.0 pyhd3eb1b0_0
jupyter_core 4.7.1 py38h06a4308_0
jupyter_server 1.4.1 py38h06a4308_0
jupyterhub 1.5.0 pypi_0 pypi
jupyterlab 3.0.14 pyhd3eb1b0_1
jupyterlab_pygments 0.1.2 py_0
jupyterlab_server 2.4.0 pyhd3eb1b0_0
jupyterlab_widgets 1.0.0 pyhd3eb1b0_1
keyring 22.3.0 py38h06a4308_0
kiwisolver 1.3.1 py38h2531618_0
krb5 1.18.2 h173b8e3_0
lazy-object-proxy 1.6.0 py38h27cfd23_0
lcms2 2.12 h3be6417_0
ld_impl_linux-64 2.33.1 h53a641e_7
libarchive 3.4.2 h62408e4_0
libcurl 7.71.1 h20c2e04_1
libedit 3.1.20210216 h27cfd23_1
libev 4.33 h7b6447c_0
libffi 3.3 he6710b0_2
libgcc-ng 9.1.0 hdf63c60_0
libgfortran-ng 7.3.0 hdf63c60_0
liblief 0.10.1 he6710b0_0
libllvm10 10.0.1 hbcb73fb_5
libpng 1.6.37 hbc83047_0
libsodium 1.0.18 h7b6447c_0
libspatialindex 1.9.3 h2531618_0
libssh2 1.9.0 h1ba5d50_1
libstdcxx-ng 9.1.0 hdf63c60_0
libtiff 4.2.0 h85742a9_0
libtool 2.4.6 h7b6447c_1005
libuuid 1.0.3 h1bed415_2
libuv 1.40.0 h7b6447c_0
libwebp-base 1.2.0 h27cfd23_0
libxcb 1.14 h7b6447c_0
libxml2 2.9.10 hb55368b_3
libxslt 1.1.34 hc22bd24_0
llvmlite 0.36.0 py38h612dafd_4
locket 0.2.1 py38h06a4308_1
lxml 4.6.3 py38h9120a33_0
lz4-c 1.9.3 h2531618_0
lzo 2.10 h7b6447c_2
mako 1.1.6 pypi_0 pypi
markupsafe 1.1.1 py38h7b6447c_0
matplotlib 3.3.4 py38h06a4308_0
matplotlib-base 3.3.4 py38h62a2d02_0
mccabe 0.6.1 py38_1
mistune 0.8.4 py38h7b6447c_1000
mkl 2021.2.0 h06a4308_296
mkl-service 2.3.0 py38h27cfd23_1
mkl_fft 1.3.0 py38h42c9631_2
mkl_random 1.2.1 py38ha9443f7_2
mock 4.0.3 pyhd3eb1b0_0
more-itertools 8.7.0 pyhd3eb1b0_0
mpc 1.1.0 h10f8cd9_1
mpfr 4.0.2 hb69a4c5_1
mpmath 1.2.1 py38h06a4308_0
msgpack-python 1.0.2 py38hff7bd54_1
multipledispatch 0.6.0 py38_0
mypy_extensions 0.4.3 py38_0
navigator-updater 0.2.1 py38_0
nbclassic 0.2.6 pyhd3eb1b0_0
nbclient 0.5.3 pyhd3eb1b0_0
nbconvert 6.0.7 py38_0
nbformat 5.1.3 pyhd3eb1b0_0
ncurses 6.2 he6710b0_1
nest-asyncio 1.5.1 pyhd3eb1b0_0
networkx 2.5 py_0
nltk 3.6.1 pyhd3eb1b0_0
nose 1.3.7 pyhd3eb1b0_1006
notebook 6.3.0 py38h06a4308_0
numba 0.53.1 py38ha9443f7_0
numexpr 2.7.3 py38h22e1b3c_1
numpy 1.20.1 py38h93e21f0_0
numpy-base 1.20.1 py38h7d8b39e_0
numpydoc 1.1.0 pyhd3eb1b0_1
oauthenticator 14.2.0 pypi_0 pypi
oauthlib 3.1.1 pypi_0 pypi
olefile 0.46 py_0
openpyxl 3.0.7 pyhd3eb1b0_0
openssl 1.1.1k h27cfd23_0
packaging 20.9 pyhd3eb1b0_0
pamela 1.0.0 pypi_0 pypi
pandas 1.2.4 py38h2531618_0
pandoc 2.12 h06a4308_0
pandocfilters 1.4.3 py38h06a4308_1
pango 1.45.3 hd140c19_0
parso 0.7.0 py_0
partd 1.2.0 pyhd3eb1b0_0
patchelf 0.12 h2531618_1
path 15.1.2 py38h06a4308_0
path.py 12.5.0 0
pathlib2 2.3.5 py38h06a4308_2
pathspec 0.7.0 py_0
patsy 0.5.1 py38_0
pcre 8.44 he6710b0_0
pep8 1.7.1 py38_0
pexpect 4.8.0 pyhd3eb1b0_3
pickleshare 0.7.5 pyhd3eb1b0_1003
pillow 8.2.0 py38he98fc37_0
pip 21.0.1 py38h06a4308_0
pixman 0.40.0 h7b6447c_0
pkginfo 1.7.0 py38h06a4308_0
pluggy 0.13.1 py38h06a4308_0
ply 3.11 py38_0
prometheus_client 0.10.1 pyhd3eb1b0_0
prompt-toolkit 3.0.17 pyh06a4308_0
prompt_toolkit 3.0.17 hd3eb1b0_0
psutil 5.8.0 py38h27cfd23_1
ptyprocess 0.7.0 pyhd3eb1b0_2
py 1.10.0 pyhd3eb1b0_0
py-lief 0.10.1 py38h403a769_0
pyasn1 0.4.8 pypi_0 pypi
pycodestyle 2.6.0 pyhd3eb1b0_0
pycosat 0.6.3 py38h7b6447c_1
pycparser 2.20 py_2
pycurl 7.43.0.6 py38h1ba5d50_0
pydocstyle 6.0.0 pyhd3eb1b0_0
pyerfa 1.7.3 py38h27cfd23_0
pyflakes 2.2.0 pyhd3eb1b0_0
pygments 2.8.1 pyhd3eb1b0_0
pylint 2.7.4 py38h06a4308_1
pyls-black 0.4.6 hd3eb1b0_0
pyls-spyder 0.3.2 pyhd3eb1b0_0
pyodbc 4.0.30 py38he6710b0_0
pyopenssl 20.0.1 pyhd3eb1b0_1
pyparsing 2.4.7 pyhd3eb1b0_0
pyqt 5.9.2 py38h05f1152_4
pyrsistent 0.17.3 py38h7b6447c_0
pysocks 1.7.1 py38h06a4308_0
pytables 3.6.1 py38h9fd0a39_0
pytest 6.2.3 py38h06a4308_2
python 3.8.8 hdb3f193_5
python-dateutil 2.8.1 pyhd3eb1b0_0
python-jose 3.3.0 pypi_0 pypi
python-json-logger 2.0.2 pypi_0 pypi
python-jsonrpc-server 0.4.0 py_0
python-language-server 0.36.2 pyhd3eb1b0_0
python-libarchive-c 2.9 pyhd3eb1b0_1
pytz 2021.1 pyhd3eb1b0_0
pywavelets 1.1.1 py38h7b6447c_2
pyxdg 0.27 pyhd3eb1b0_0
pyyaml 5.4.1 py38h27cfd23_1
pyzmq 20.0.0 py38h2531618_1
qdarkstyle 2.8.1 py_0
qt 5.9.7 h5867ecd_1
qtawesome 1.0.2 pyhd3eb1b0_0
qtconsole 5.0.3 pyhd3eb1b0_0
qtpy 1.9.0 py_0
readline 8.1 h27cfd23_0
regex 2021.4.4 py38h27cfd23_0
requests 2.25.1 pyhd3eb1b0_0
ripgrep 12.1.1 0
rope 0.18.0 py_0
rsa 4.7.2 pypi_0 pypi
rtree 0.9.7 py38h06a4308_1
ruamel-yaml 0.17.17 pypi_0 pypi
ruamel-yaml-clib 0.2.6 pypi_0 pypi
ruamel_yaml 0.15.100 py38h27cfd23_0
scikit-image 0.18.1 py38ha9443f7_0
scikit-learn 0.24.1 py38ha9443f7_0
scipy 1.6.2 py38had2a1c9_1
seaborn 0.11.1 pyhd3eb1b0_0
secretstorage 3.3.1 py38h06a4308_0
send2trash 1.5.0 pyhd3eb1b0_1
setuptools 52.0.0 py38h06a4308_0
simplegeneric 0.8.1 py38_2
singledispatch 3.6.1 pyhd3eb1b0_1001
sip 4.19.13 py38he6710b0_0
six 1.15.0 py38h06a4308_0
sniffio 1.2.0 py38h06a4308_1
snowballstemmer 2.1.0 pyhd3eb1b0_0
sortedcollections 2.1.0 pyhd3eb1b0_0
sortedcontainers 2.3.0 pyhd3eb1b0_0
soupsieve 2.2.1 pyhd3eb1b0_0
sphinx 4.0.1 pyhd3eb1b0_0
sphinxcontrib 1.0 py38_1
sphinxcontrib-applehelp 1.0.2 pyhd3eb1b0_0
sphinxcontrib-devhelp 1.0.2 pyhd3eb1b0_0
sphinxcontrib-htmlhelp 1.0.3 pyhd3eb1b0_0
sphinxcontrib-jsmath 1.0.1 pyhd3eb1b0_0
sphinxcontrib-qthelp 1.0.3 pyhd3eb1b0_0
sphinxcontrib-serializinghtml 1.1.4 pyhd3eb1b0_0
sphinxcontrib-websupport 1.2.4 py_0
spyder 4.2.5 py38h06a4308_0
spyder-kernels 1.10.2 py38h06a4308_0
sqlalchemy 1.4.15 py38h27cfd23_0
sqlite 3.35.4 hdfb4753_0
statsmodels 0.12.2 py38h27cfd23_0
sympy 1.8 py38h06a4308_0
tbb 2020.3 hfd86e86_0
tblib 1.7.0 py_0
terminado 0.9.4 py38h06a4308_0
testpath 0.4.4 pyhd3eb1b0_0
textdistance 4.2.1 pyhd3eb1b0_0
threadpoolctl 2.1.0 pyh5ca1d4c_0
three-merge 0.1.1 pyhd3eb1b0_0
tifffile 2020.10.1 py38hdd07704_2
tk 8.6.10 hbc83047_0
toml 0.10.2 pyhd3eb1b0_0
toolz 0.11.1 pyhd3eb1b0_0
tornado 6.1 py38h27cfd23_0
tqdm 4.59.0 pyhd3eb1b0_1
traitlets 5.0.5 pyhd3eb1b0_0
typed-ast 1.4.2 py38h27cfd23_1
typing_extensions 3.7.4.3 pyha847dfd_0
ujson 4.0.2 py38h2531618_0
unicodecsv 0.14.1 py38_0
unixodbc 2.3.9 h7b6447c_0
urllib3 1.26.4 pyhd3eb1b0_0
watchdog 1.0.2 py38h06a4308_1
wcwidth 0.2.5 py_0
webencodings 0.5.1 py38_1
werkzeug 1.0.1 pyhd3eb1b0_0
wheel 0.36.2 pyhd3eb1b0_0
widgetsnbextension 3.5.1 py38_0
wrapt 1.12.1 py38h7b6447c_1
wurlitzer 2.1.0 py38h06a4308_0
xlrd 2.0.1 pyhd3eb1b0_0
xlsxwriter 1.3.8 pyhd3eb1b0_0
xlwt 1.3.0 py38_0
xmltodict 0.12.0 py_0
xz 5.2.5 h7b6447c_0
yaml 0.2.5 h7b6447c_0
yapf 0.31.0 pyhd3eb1b0_0
zeromq 4.3.4 h2531618_0
zict 2.0.0 pyhd3eb1b0_0
zipp 3.4.1 pyhd3eb1b0_0
zlib 1.2.11 h7b6447c_3
zope 1.0 py38_1
zope.event 4.5.0 py38_0
zope.interface 5.3.0 py38h27cfd23_0
zstd 1.4.5 h9ceee32_0

(base) ubuntu@my-machine:~$ pip list
Package Version


alabaster 0.7.12
alembic 1.7.5
anaconda-client 1.7.2
anaconda-navigator 2.0.3
anaconda-project 0.9.1
anyio 2.2.0
appdirs 1.4.4
argh 0.26.2
argon2-cffi 20.1.0
asn1crypto 1.4.0
astroid 2.5
astropy 4.2.1
async-generator 1.10
atomicwrites 1.4.0
attrs 20.3.0
autopep8 1.5.6
Babel 2.9.0
backcall 0.2.0
backports.functools-lru-cache 1.6.4
backports.shutil-get-terminal-size 1.0.0
backports.tempfile 1.0
backports.weakref 1.0.post1
beautifulsoup4 4.9.3
bitarray 2.1.0
bkcharts 0.2
black 19.10b0
bleach 3.3.0
bokeh 2.3.2
boto 2.49.0
Bottleneck 1.3.2
brotlipy 0.7.0
certifi 2020.12.5
certipy 0.1.3
cffi 1.14.5
chardet 4.0.0
click 7.1.2
cloudpickle 1.6.0
clyent 1.2.2
colorama 0.4.4
conda 4.10.1
conda-build 3.21.4
conda-content-trust 0+unknown
conda-package-handling 1.7.3
conda-repo-cli 1.0.4
conda-token 0.3.0
conda-verify 3.4.2
contextlib2 0.6.0.post1
cryptography 3.4.7
cycler 0.10.0
Cython 0.29.23
cytoolz 0.11.0
dask 2021.4.0
decorator 5.0.6
defusedxml 0.7.1
diff-match-patch 20200713
distributed 2021.4.1
docutils 0.17.1
ecdsa 0.17.0
entrypoints 0.3
et-xmlfile 1.0.1
fastcache 1.1.0
filelock 3.0.12
flake8 3.9.0
Flask 1.1.2
Flask-AWSCognito 1.3
fsspec 0.9.0
future 0.18.2
gevent 21.1.2
glob2 0.7
gmpy2 2.0.8
greenlet 1.0.0
h5py 2.10.0
HeapDict 1.0.1
html5lib 1.1
idna 2.10
imageio 2.9.0
imagesize 1.2.0
importlib-metadata 3.10.0
importlib-resources 5.4.0
iniconfig 1.1.1
intervaltree 3.1.0
ipykernel 5.3.4
ipython 7.22.0
ipython-genutils 0.2.0
ipywidgets 7.6.3
isort 5.8.0
itsdangerous 1.1.0
jdcal 1.4.1
jedi 0.17.2
jeepney 0.6.0
Jinja2 2.11.3
joblib 1.0.1
json5 0.9.5
jsonschema 3.2.0
jupyter 1.0.0
jupyter-client 6.1.12
jupyter-console 6.4.0
jupyter-core 4.7.1
jupyter-packaging 0.7.12
jupyter-server 1.4.1
jupyter-telemetry 0.1.0
jupyterhub 1.5.0
jupyterlab 3.0.14
jupyterlab-pygments 0.1.2
jupyterlab-server 2.4.0
jupyterlab-widgets 1.0.0
keyring 22.3.0
kiwisolver 1.3.1
lazy-object-proxy 1.6.0
libarchive-c 2.9
llvmlite 0.36.0
locket 0.2.1
lxml 4.6.3
Mako 1.1.6
MarkupSafe 1.1.1
matplotlib 3.3.4
mccabe 0.6.1
mistune 0.8.4
mkl-fft 1.3.0
mkl-random 1.2.1
mkl-service 2.3.0
mock 4.0.3
more-itertools 8.7.0
mpmath 1.2.1
msgpack 1.0.2
multipledispatch 0.6.0
mypy-extensions 0.4.3
navigator-updater 0.2.1
nbclassic 0.2.6
nbclient 0.5.3
nbconvert 6.0.7
nbformat 5.1.3
nest-asyncio 1.5.1
networkx 2.5
nltk 3.6.1
nose 1.3.7
notebook 6.3.0
numba 0.53.1
numexpr 2.7.3
numpy 1.20.1
numpydoc 1.1.0
oauthenticator 14.2.0
oauthlib 3.1.1
olefile 0.46
openpyxl 3.0.7
packaging 20.9
pamela 1.0.0
pandas 1.2.4
pandocfilters 1.4.3
parso 0.7.0
partd 1.2.0
path 15.1.2
pathlib2 2.3.5
pathspec 0.7.0
patsy 0.5.1
pep8 1.7.1
pexpect 4.8.0
pickleshare 0.7.5
Pillow 8.2.0
pip 21.0.1
pkginfo 1.7.0
pluggy 0.13.1
ply 3.11
prometheus-client 0.10.1
prompt-toolkit 3.0.17
psutil 5.8.0
ptyprocess 0.7.0
py 1.10.0
pyasn1 0.4.8
pycodestyle 2.6.0
pycosat 0.6.3
pycparser 2.20
pycurl 7.43.0.6
pydocstyle 6.0.0
pyerfa 1.7.3
pyflakes 2.2.0
Pygments 2.8.1
pylint 2.7.4
pyls-black 0.4.6
pyls-spyder 0.3.2
pyodbc 4.0.0-unsupported
pyOpenSSL 20.0.1
pyparsing 2.4.7
pyrsistent 0.17.3
PySocks 1.7.1
pytest 6.2.3
python-dateutil 2.8.1
python-jose 3.3.0
python-json-logger 2.0.2
python-jsonrpc-server 0.4.0
python-language-server 0.36.2
pytz 2021.1
PyWavelets 1.1.1
pyxdg 0.27
PyYAML 5.4.1
pyzmq 20.0.0
QDarkStyle 2.8.1
QtAwesome 1.0.2
qtconsole 5.0.3
QtPy 1.9.0
regex 2021.4.4
requests 2.25.1
rope 0.18.0
rsa 4.7.2
Rtree 0.9.7
ruamel-yaml-conda 0.15.100
ruamel.yaml 0.17.17
ruamel.yaml.clib 0.2.6
scikit-image 0.18.1
scikit-learn 0.24.1
scipy 1.6.2
seaborn 0.11.1
SecretStorage 3.3.1
Send2Trash 1.5.0
setuptools 52.0.0.post20210125
simplegeneric 0.8.1
singledispatch 0.0.0
sip 4.19.13
six 1.15.0
sniffio 1.2.0
snowballstemmer 2.1.0
sortedcollections 2.1.0
sortedcontainers 2.3.0
soupsieve 2.2.1
Sphinx 4.0.1
sphinxcontrib-applehelp 1.0.2
sphinxcontrib-devhelp 1.0.2
sphinxcontrib-htmlhelp 1.0.3
sphinxcontrib-jsmath 1.0.1
sphinxcontrib-qthelp 1.0.3
sphinxcontrib-serializinghtml 1.1.4
sphinxcontrib-websupport 1.2.4
spyder 4.2.5
spyder-kernels 1.10.2
SQLAlchemy 1.4.15
statsmodels 0.12.2
sympy 1.8
tables 3.6.1
tblib 1.7.0
terminado 0.9.4
testpath 0.4.4
textdistance 4.2.1
threadpoolctl 2.1.0
three-merge 0.1.1
tifffile 2020.10.1
toml 0.10.2
toolz 0.11.1
tornado 6.1
tqdm 4.59.0
traitlets 5.0.5
typed-ast 1.4.2
typing-extensions 3.7.4.3
ujson 4.0.2
unicodecsv 0.14.1
urllib3 1.26.4
watchdog 1.0.2
wcwidth 0.2.5
webencodings 0.5.1
Werkzeug 1.0.1
wheel 0.36.2
widgetsnbextension 3.5.1
wrapt 1.12.1
wurlitzer 2.1.0
xlrd 2.0.1
XlsxWriter 1.3.8
xlwt 1.3.0
xmltodict 0.12.0
yapf 0.31.0
zict 2.0.0
zipp 3.4.1
zope.event 4.5.0
zope.interface 5.3.0

It looks like you’ve listed the default Python environment. With TLJH the hub environment is under /opt/tljh/hub.

Are you using the latest version of TLJH?

I believe so.

Does this look correct?

(base) ubuntu@(my machine):~$ ls -alh /opt/tljh/hub/
total 28K
drwxr-xr-x 6 root root 4.0K Nov 12 19:40 .
drwxr-xr-x 6 root root 4.0K Nov 12 19:41 …
drwxr-xr-x 2 root root 4.0K Nov 22 11:49 bin
drwxr-xr-x 3 root root 4.0K Nov 12 19:41 include
drwxr-xr-x 3 root root 4.0K Nov 12 19:40 lib
lrwxrwxrwx 1 root root 3 Nov 12 19:40 lib64 → lib
-rw-r–r-- 1 root root 70 Nov 12 19:40 pyvenv.cfg
drwxr-xr-x 5 root root 4.0K Nov 12 19:41 share

(base) ubuntu@(my machine):~$ cat /opt/tljh/hub/pyvenv.cfg
home = /usr/bin
include-system-site-packages = false
version = 3.8.10

Is the authenticator installed in your hub environment?

/opt/tljh/hub/bin/pip list

Does not appear to be:

(base) ubuntu@(my machine):~$ /opt/tljh/hub/bin/pip list
Package Version


aiohttp 3.8.0
aiosignal 1.2.0
alembic 1.7.5
async-generator 1.10
async-timeout 4.0.1
attrs 21.2.0
backoff 1.11.1
bcrypt 3.2.0
certifi 2021.10.8
certipy 0.1.3
cffi 1.15.0
charset-normalizer 2.0.7
cryptography 35.0.0
deepmerge 0.3.0
entrypoints 0.3
escapism 1.0.1
frozenlist 1.2.0
greenlet 1.1.2
idna 3.3
importlib-metadata 4.8.2
importlib-resources 5.4.0
Jinja2 3.0.3
jsonschema 4.2.1
jupyter-telemetry 0.1.0
jupyterhub 1.5.0
jupyterhub-configurator 1.0
jupyterhub-firstuseauthenticator 1.0.0
jupyterhub-idle-culler 1.2.1
jupyterhub-ldapauthenticator 1.3.2
jupyterhub-nativeauthenticator 1.0.5
jupyterhub-systemdspawner 0.15.0
jupyterhub-tmpauthenticator 0.6
jupyterhub-traefik-proxy 0.3.0
ldap3 2.9.1
Mako 1.1.5
MarkupSafe 2.0.1
multidict 5.2.0
oauthenticator 14.2.0
oauthlib 3.1.1
onetimepass 1.0.1
pamela 1.0.0
passlib 1.7.4
pip 21.3.1
pkg_resources 0.0.0
pluggy 1.0.0
prometheus-client 0.12.0
pyasn1 0.4.8
pycparser 2.21
pycurl 7.44.1
pyOpenSSL 21.0.0
pyrsistent 0.18.0
python-dateutil 2.8.2
python-json-logger 2.0.2
requests 2.26.0
ruamel.yaml 0.17.17
ruamel.yaml.clib 0.2.6
setuptools 44.0.0
six 1.16.0
SQLAlchemy 1.4.27
the-littlest-jupyterhub 0.1
toml 0.10.2
tornado 6.1
traitlets 5.1.1
typing-extensions 3.10.0.2
urllib3 1.26.7
yarl 1.7.2
zipp 3.6.0

What does that mean (or imply)?

Looks like I have the same libraries on the machine that works and the machine that doesn’t - with the exception of jupyterhub-dummyauthenticator, but the versions are all different.

Machine that does NOT work:
(base) ubuntu@my-machine:~$ /opt/tljh/hub/bin/pip list | grep auth
jupyterhub-firstuseauthenticator 1.0.0
jupyterhub-ldapauthenticator 1.3.2
jupyterhub-nativeauthenticator 1.0.5
jupyterhub-tmpauthenticator 0.6
oauthenticator 14.2.0
oauthlib 3.1.1

Machine that DOES work:
jupyterhub-dummyauthenticator 0.3.1
jupyterhub-firstuseauthenticator 0.14.1
jupyterhub-ldapauthenticator 1.3.0
jupyterhub-nativeauthenticator 0.0.7
jupyterhub-tmpauthenticator 0.6
oauthenticator 0.10.0
oauthlib 3.1.1

Circling back with a solution:

I explicitly set the version for oauthenticator to 0.10.0:

sudo /opt/tljh/hub/bin/pip install ‘oauthenticator==0.10.0’

And then restarted the service and it worked correctly.

So it appears that TLJH is not compatible with the newer/latest version(s).

1 Like