tldr-pages/tldr-python-client

ImportError: cannot import name 'cli' from 'tldr'

gerazov opened this issue · 8 comments

Awesome tool 😎

I'm getting an import error on a fresh install - am I missing some dependencies?

$ sudo pip3 install tldr
Collecting tldr
  Using cached tldr-3.0.0-py3-none-any.whl (10 kB)
Requirement already satisfied: termcolor in /usr/lib/python3.10/site-packages (from tldr) (1.1.0)
Requirement already satisfied: shtab>=1.3.10 in /usr/lib/python3.10/site-packages (from tldr) (1.5.3)
Requirement already satisfied: colorama in /usr/lib/python3.10/site-packages (from tldr) (0.4.4)
Installing collected packages: tldr
Successfully installed tldr-3.0.0

$ tldr ls   
Traceback (most recent call last):
  File "/usr/bin/tldr", line 5, in <module>
    from tldr import cli
ImportError: cannot import name 'cli' from 'tldr' (/usr/bin/tldr.py)

Do you have any other modules installed that might be using the tldr namespace? What's the output from doing pip3 list?

What are the contents of doing cat /usr/bin/tldr?

I guess it's something with the environment - I can't reproduce on my other machine.

$ cat /usr/bin/tldr 
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from tldr import cli
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(cli())
And the pip3 list
$ pip3 list                                                                                                                                                                                                                                                                       
Package             Version                                                                                                                                                                                                                                                         
------------------- -----------                                                                                                                                                                                                                                                     
anytree             2.8.0                                                                                                                                                                                                                                                           
apparmor            3.0.3                                                                                                                                                                                                                                                           
appdirs             1.4.4                                                                                                                                                                                                                                                           
application-utility 1.3.2                                                                                                                                                                                                                                                           
asn1crypto          1.4.0                                                                                                                                                                                                                                                           
Beaker              1.11.0                                                                                                                                                                                                                                                          
bottle              0.12.19                                                                                                                                                                                                                                                         
btrfsutil           5.15.1                                                                                                                                                                                                                                                          
CacheControl        0.12.6                                                                                                                                                                                                                                                          
ceph                1.0.0                                                                                                                                                                                                                                                           
ceph-volume         1.0.0                                                                                                                                                                                                                                                           
cephfs              2.0.0                                                                                                                                                                                                                                                           
cephfs-shell        0.0.1                                                                                                                                                                                                                                                           
certifi             2021.10.8                                                                                                                                                                                                                                                       
cffi                1.15.0                                                                                                                                                                                                                                                          
chardet             4.0.0                                                                                                                                                                                                                                                           
colorama            0.4.4                                                                                                                                                                                                                                                           
configobj           5.1.0.dev0                                                                                                                                                                                                                                                      
contextlib2         0.6.0.post1                                                                                                                                                                                                                                                     
cryptography        36.0.1                                                                                                                                                                                                                                                          
cupshelpers         1.0                                                                                                                                                                                                                                                             
distlib             0.3.3                                                                                                                                                                                                                                                           
distro              1.6.0                                                                                                                                                                                                                                                           
dnspython           2.1.0                                                                                                                                                                                                                                                           
docopt              0.6.2                                                                                                                                                                                                                                                           
docutils            0.16                                                                                                                                                                                                                                                            
fasteners           0.16.3                                                                                                                                                                                                                                                          
html5lib            1.1                                                                                                                                                                                                                                                             
idna                3.3 
importlib-metadata  4.8.1
iotop               0.6
Jinja2              3.0.3
keyutils            0.6
LibAppArmor         3.0.3
lockfile            0.12.2
louis               3.20.0
lxml                4.6.5
Mako                1.1.6
Markdown            3.3.6
MarkupSafe          2.0.1
meson               0.60.3
more-itertools      8.10.0
msgpack             1.0.3
netsnmp-python      1.0a1
npyscreen           4.10.5
ordered-set         4.0.2
packaging           20.9
pacman-mirrors      4.23.2
pep517              0.12.0
Pillow              8.4.0
pip                 20.3.4
ply                 3.11
powerline-status    2.8.2
progress            1.6
psutil              5.8.0
pwquality           1.4.4
pyaml               21.8.3
pycairo             1.20.1
pycparser           2.21
pycups              2.0.1
pycurl              7.44.1
Pygments            2.10.0
PyGObject           3.42.0
PyJWT               2.2.0
pyOpenSSL           21.0.0
pyparsing           2.4.7
PyQt5               5.15.6
PyQt5-sip           12.9.0
pysmbc              1.0.23
python-dateutil     2.8.2
pytoml              0.1.21
PyYAML              5.4.1
rados               2.0.0
ranger-fm           1.9.3
rbd                 2.0.0
reportlab           3.6.3
requests            2.26.0
resolvelib          0.5.5
retrying            1.3.3
rgw                 2.0.0
setuptools          57.4.0
shiboken2           5.15.2
shtab               1.5.3
sip                 4.19.25
six                 1.16.0
smbus               1.1
team                1.0
termcolor           1.1.0
terminator          2.1.1
tldr                3.0.0
toml                0.10.2
tomli               1.2.2
tqdm                4.62.3
trash-cli           0.21.10.24
udiskie             2.4.0
urllib3             1.26.7
validate            5.1.0.dev0
webencodings        0.5.1
zipp                3.6.0

Does /usr/bin/python point at your python3 installation?

It seems so:

$ which python
/usr/bin/python

$ ll /usr/bin/python              
lrwxrwxrwx 1 root root 7 дек 19 00:53 /usr/bin/python -> python3*

$ ll /usr/bin/python3 
lrwxrwxrwx 1 root root 10 дек 19 00:53 /usr/bin/python3 -> python3.10*

I wonder if the * at the end of the symlink is messing anything up? Does /usr/bin/python --version print out 3.10? And if you do /usr/bin/python, can do you run import tldr at all in the repl?

Really, my only thought at this point on what the error could be is that /usr/bin/python that's referenced in the script above is divorced in some way from where pip3 has installed stuff.

You're right - it does work in the REPL:

$ /usr/bin/python --version
Python 3.10.1

$ /usr/bin/python
Python 3.10.1 (main, Dec 18 2021, 23:53:45) [GCC 11.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tldr
>>> 

Hm, what is /usr/bin/tldr.py? I think that might be the problem, where /usr/bin/tldr is then looking at /usr/bin/tldr.py to import from, but it's not the tldr that you installed via pip3, and so fails?

Hmm, seems Python2 code in /usr/bin/tldr.py - removed it and now it works 👍

Thanks 🙏