spyder-ide / spyder

Official repository for Spyder - The Scientific Python Development Environment
https://www.spyder-ide.org
MIT License
8.32k stars 1.61k forks source link

Editor autocompletion and help extraction not working in Spyder 3.1.4 #4410

Closed jrast closed 7 years ago

jrast commented 7 years ago

I have updated Spyder (pip install -U spyder) to 3.1.4 and the autocompletion in the editor stopped working. In the IPython console it's still working, but not in the editor.

Please provide any additional information below

Dependencies

jedi >=0.9.0 : 0.10.2 (OK) matplotlib >=1.0 : 2.0.0 (OK) nbconvert >=4.0 : 5.1.1 (OK) numpy >=1.7 : 1.11.3 (OK) pandas >=0.13.1 : 0.19.2 (OK) pep8 >=0.6 : 1.7.0 (OK) pyflakes >=0.6.0 : 1.5.0 (OK) pygments >=2.0 : 2.2.0 (OK) pylint >=0.25 : 1.7.1 (OK) qtconsole >=4.2.0: 4.3.0 (OK) rope >=0.9.4 : 0.9.4-1 (OK) sphinx >=0.6.6 : 1.5.5 (OK) sympy >=0.7.3 : None (NOK)

CAM-Gerlach commented 6 years ago

@endolith Also, for the record, the canonical conda syntax is conda install spyder-kernels=0 .

endolith commented 6 years ago

Ok, well I still have the Ctrl+I → "No documentation available" problem after following those directions. Works from command line but not from editor.

IPython >=4.0     :  7.0.1 (OK)
cython >=0.21     :  0.28.5 (OK)
jedi >=0.9.0      :  0.13.1 (OK)
matplotlib >=2.0.0:  3.0.0 (OK)
nbconvert >=4.0   :  5.3.1 (OK)
numpy >=1.7       :  1.15.2 (OK)
pandas >=0.13.1   :  0.23.4 (OK)
pycodestyle >=2.3 :  2.4.0 (OK)
pyflakes >=0.6.0  :  2.0.0 (OK)
pygments >=2.0    :  2.2.0 (OK)
pylint >=0.25     :  2.1.1 (OK)
qtconsole >=4.2.0 :  4.4.1 (OK)
rope >=0.9.4      :  0.10.7 (OK)
sphinx >=0.6.6    :  1.8.1 (OK)
sympy >=0.7.3     :  1.3 (OK)
CAM-Gerlach commented 6 years ago

@endolith Did you try autocompletion as well from the Editor? Sometimes Spyder's third-party completion libraries rope and jedi aren't able to find docstrings by static analysis, while dynamic analysis is much easier to do. Do you have enum34 installed by any chance? Can you try from an environment with anaconda version 5.3.0 installed (conda install anaconda=5.3.0) to ensure your package versions are consistent with the supported standard? Most likely, a third-party dependency down the chain was updated that broke another dependency, etc. such that there is the problem. Thanks.

Jimmeee commented 6 years ago

I am having similar issues.

I just did a new install of Spyder via Anaconda, on Ubuntu 16.04. As we use Python 2.X, I had to install Anaconda2-5.3.0-Linux-x86_64.sh, which uses Python 2.7.15 and Spyder 3.3.1.

I have gone to Tools -> Settings -> Editor -> Code Introspection, and checked all the options, which includes "Link to object definition."

However, control-i before a command* always gives "No documentation available."

Because I am new to Python, this is a huge issue to me. Context-sensitive usage/syntax help would be much better than looking up every command with a book, and this capability was one of the things that led me to choose Spyder.

*Note that I created a custom class and then an object of that class, and I was able to get control-i to work on that object. Perhaps I am expecting the help to be too general. Does it literally only work on objects, as opposed to classes, or any other type of command (e.g., print, import, etc.)? I guess what I am looking for is not just help on object definition, but essentially automatically calling up the man page on arbitrary keywords.

CAM-Gerlach commented 6 years ago

Most likely, if this isn't a machine specific issue it has to do with something with the specific versions of the third-party libraries Spyder depends on for its completion and introspection, e.g. rope, jedi, parso etc. Please paste the full output of the Spyder dependencies dialog (Help > Dependencies) in a

code-block

to help us isolate that. Also, make sure you don't have enum34 installed anywhere in your environment, Also, let us know if code completion (Tab) and go to definition (Ctrl-click a symbol name) works. Try creating and testing a fresh environment with just spyder, e.g.

conda create -n your-name-here python=2 # If you must still use Python 2...
source activate your-name-here
conda install spyder
spyder

You can also consult our Spyder Troubleshooting Guide, specifically the Basic First Aid and Emergency CPR sections,

Context-sensitive usage/syntax help would be much better than looking up every command with a book, and this capability was one of the things that led me to choose Spyder.

True, and its a very important feature for me as well (which is why I'm really hopeful for the major improvements in this area coming soon in Spyder 4), although to be fair my standard fallback is a dedicated browser window I keep open on one of my monitors to quickly Alt-Tab and search for a function, method or class of interest.

Perhaps I am expecting the help to be too general. Does it literally only work on objects, as opposed to classes, or any other type of command (e.g., print, import, etc.)?

It should work on anything that has a properly retrievable docstring, whether that is a builtin, function, class, method, instance, module, package, etc. If functions don't have docstrings or have incorrectly formatted ones, it may not be as helpful but should at least print the function signature and the other features (autocompletion, go to definition, calltips etc) should still work, and you can also switch help to source code mode to view the actual source of the function.

The main reason all this might not work for specific symbols is if a package is structured in a non-standard way or with some functions are compiled/C/FORTRAN/etc. code, common with some pandas, numpy, and scipy functions, since there's no easy way for them to be retrieved statically from the source without running the code (which is why they'll work in the Console, where dynamic analysis is used for all of this, but not in the Editor where static analysis is the method of choice).

Jimmeee commented 6 years ago

Thank you for the quick reply. I haven't tried any third-party packages yet like numpy. I was just going through the Python reserved word list and some other commands I knew and couldn't get any definitions for those.

I will try setting up the non-Anaconda version as soon as I can. My current output for dependencies is:

IPython >=4.0;<6.0:  5.8.0 (OK)
cython >=0.21     :  0.28.5 (OK)
jedi >=0.9.0      :  0.12.1 (OK)
matplotlib >=2.0.0:  2.2.3 (OK)
nbconvert >=4.0   :  5.4.0 (OK)
numpy >=1.7       :  1.15.1 (OK)
pandas >=0.13.1   :  0.23.4 (OK)
psutil >=0.3      :  5.4.7 (OK)
pycodestyle >=2.3 :  2.4.0 (OK)
pyflakes >=0.5.0  :  2.0.0 (OK)
pygments >=2.0    :  2.2.0 (OK)
pylint >=0.25     :  1.9.2 (OK)
qtconsole >=4.2.0 :  4.4.1 (OK)
rope >=0.9.4      :  0.11.0 (OK)
sphinx >=0.6.6    :  1.7.9 (OK)
sympy >=0.7.3     :  1.2 (OK)
CAM-Gerlach commented 6 years ago

@Jimmeee

I was just going through the Python reserved word list and some other commands I knew and couldn't get any definitions for those.

Generally, the reserved words (like def, with, for etc.) won't have docstrings since are syntactical components of the language itself, unlike the builtin functions (print(), open(), etc), and they are very basic but few in number so you should be able to learn them soon enough. Also, aside from the builtins you won't be able to get help on a function, method or module you haven't written in import statement for in your code, since there's no way for the introspection to know what you mean (you could theoretically be referring to anything).

I will try setting up the non-Anaconda version as soon as I can.

Please stick with Anaconda; its the best way to reduce the changes of dependency problems like this and avoid a botched installation.

My current output for dependencies is:

FYI, triple backticks on their own line above and below will create a multi-line code block. I fixed your post above to demonstrate.

Jimmeee commented 6 years ago

Ahhh, open() works. Maybe I was just trying words that have no docstring. Print doesn't work, but my understanding is that in Python 2.X, print wasn't a function (but in 3.X it is), so maybe that's why.

CAM-Gerlach commented 6 years ago

@Jimmeee Yes, print is a reserved word in Python 2.x, but as of >= 2.6 it is also a function as in 3, print(), which is how you certainly should be calling it anyway.

kkumar949 commented 5 years ago

Hi all, I have a similar problem. My help and autocomplete does not work but only for the Keras library.

``` _ipyw_jlab_nb_ext_conf 0.1.0 py36_0 alabaster 0.7.12 py36_0 anaconda-client 1.7.2 py36_0 anaconda-navigator 1.9.6 py36_0 anaconda-project 0.8.2 py36_0 appnope 0.1.0 py36hf537a9a_0 asn1crypto 0.24.0 py36_0 astroid 2.1.0 py36_0 astropy 3.1.1 py36h1de35cc_0 atomicwrites 1.2.1 py36_0 attrs 18.2.0 py36h28b3542_0 babel 2.6.0 py36_0 backcall 0.1.0 py36_0 backports 1.0 py36_1 backports.os 0.1.1 py36_0 backports.shutil_get_terminal_size 1.0.0 py36_2 beautifulsoup4 4.7.1 py36_1 bitarray 0.8.3 py36h1de35cc_0 bkcharts 0.2 py36h073222e_0 blas 1.0 mkl blaze 0.11.3 py36_0 bleach 3.1.0 pypi_0 pypi blosc 1.14.4 hd9629dc_0 bokeh 1.0.4 py36_0 boto 2.49.0 py36_0 bottleneck 1.2.1 py36h1d22016_1 bzip2 1.0.6 h1de35cc_5 ca-certificates 2019.1.23 0 certifi 2018.11.29 py36_0 cffi 1.11.5 py36h6174b99_1 chardet 3.0.4 py36_1 click 7.0 py36_0 cloudpickle 0.7.0 py_0 clyent 1.2.2 py36_1 colorama 0.4.1 py36_0 conda 4.6.2 py36_0 conda-build 3.17.8 py36_0 conda-env 2.6.0 1 conda-verify 3.1.1 py36_0 contextlib2 0.5.5 py36hd66e5e7_0 cryptography 2.4.2 py36ha12b0ac_0 curl 7.63.0 ha441bb4_1000 cycler 0.10.0 py36hfc81398_0 cython 0.29.4 py36h0a44026_0 cytoolz 0.9.0.1 py36h1de35cc_1 dask 1.1.1 py_0 dask-core 1.1.1 py_0 datashape 0.5.4 py36_1 dbus 1.13.2 h760590f_1 decorator 4.3.2 py36_0 defusedxml 0.5.0 py36_1 distributed 1.25.3 py36_0 docutils 0.14 py36hbfde631_0 entrypoints 0.3 py36_0 et_xmlfile 1.0.1 py36h1315bdc_0 expat 2.2.6 h0a44026_0 fastcache 1.0.2 py36h1de35cc_2 filelock 3.0.10 py36_0 flask 1.0.2 py36_1 flask-cors 3.0.7 py36_0 freetype 2.9.1 hb4e5f40_0 future 0.17.1 py36_0 get_terminal_size 1.0.0 h7520d66_0 gettext 0.19.8.1 h15daf44_3 gevent 1.4.0 py36h1de35cc_0 glib 2.56.2 hd9629dc_0 glob2 0.6 py36_1 gmp 6.1.2 hb37e062_1 gmpy2 2.0.8 py36h6ef4df4_2 greenlet 0.4.15 py36h1de35cc_0 h5py 2.8.0 py36h878fce3_3 hdf5 1.10.2 hfa1e0ec_1 heapdict 1.0.0 py36_2 html5lib 1.0.1 py36_0 icu 58.2 h4b95b61_1 idna 2.8 py36_0 imageio 2.4.1 py36_0 imagesize 1.1.0 py36_0 importlib_metadata 0.7 py36_0 intel-openmp 2019.1 144 ipykernel 5.1.0 py36h39e3cac_0 ipython 7.2.0 py36h39e3cac_0 ipython_genutils 0.2.0 py36h241746c_0 ipywidgets 7.4.2 py36_0 isort 4.3.4 py36_0 itsdangerous 1.1.0 py36_0 jbig 2.1 h4d881f8_0 jdcal 1.4 py36_0 jedi 0.13.2 py36_0 jinja2 2.10 py36_0 jpeg 9b he5867d9_2 jsonschema 2.6.0 py36hb385e00_0 jupyter 1.0.0 py36_7 jupyter_client 5.2.4 py36_0 jupyter_console 6.0.0 py36_0 jupyter_core 4.4.0 py36_0 jupyterlab 0.35.3 py36_0 jupyterlab_server 0.2.0 py36_0 keyring 17.1.1 py36_0 kiwisolver 1.0.1 py36h0a44026_0 krb5 1.16.1 hddcf347_7 lazy-object-proxy 1.3.1 py36h1de35cc_2 libarchive 3.3.3 h786848e_5 libcurl 7.63.0 h051b688_1000 libcxx 4.0.1 hcfea43d_1 libcxxabi 4.0.1 hcfea43d_1 libedit 3.1.20170329 hb402a30_2 libffi 3.2.1 h475c297_4 libgfortran 3.0.1 h93005f0_2 libiconv 1.15 hdd342a3_7 liblief 0.9.0 h2a1bed3_0 libpng 1.6.35 ha441bb4_0 libsodium 1.0.16 h3efe00b_0 libssh2 1.8.0 ha12b0ac_4 libtiff 4.0.9 hcb84e12_2 libxml2 2.9.8 hab757c2_1 libxslt 1.1.32 hb819dd2_0 llvmlite 0.27.0 py36h8c7ce04_0 locket 0.2.0 py36hca03003_1 lxml 4.3.0 py36hef8c89e_0 lz4-c 1.8.1.2 h1de35cc_0 lzo 2.10 h362108e_2 markupsafe 1.1.0 py36h1de35cc_0 matplotlib 3.0.2 py36h54f8f79_0 mccabe 0.6.1 py36_1 mistune 0.8.4 py36h1de35cc_0 mkl 2019.1 144 mkl-service 1.1.2 py36hfbe908c_5 mkl_fft 1.0.10 py36h5e564d8_0 mkl_random 1.0.2 py36h27c97d8_0 more-itertools 5.0.0 py36_0 mpc 1.1.0 h6ef4df4_1 mpfr 4.0.1 h3018a27_3 mpmath 1.1.0 py36_0 msgpack-python 0.6.1 py36h04f5b5a_1 multipledispatch 0.6.0 py36_0 navigator-updater 0.2.1 py36_0 nbconvert 5.4.0 py36_1 nbformat 4.4.0 py36h827af21_0 ncurses 6.1 h0a44026_1 networkx 2.2 py36_1 nltk 3.4 py36_1 nose 1.3.7 py36_2 notebook 5.7.4 py36_0 numba 0.42.0 py36h6440ff4_0 numexpr 2.6.9 py36h7413580_0 numpy 1.15.4 py36hacdab7b_0 numpy-base 1.15.4 py36h6575580_0 numpydoc 0.8.0 py36_0 odo 0.5.1 py36hc1af34a_0 olefile 0.46 py36_0 openpyxl 2.5.14 py_0 openssl 1.1.1a h1de35cc_0 packaging 19.0 py36_0 pandas 0.24.1 py36h0a44026_0 pandoc 1.19.2.1 ha5e8f32_1 pandocfilters 1.4.2 py36_1 parso 0.3.2 py36_0 partd 0.3.9 py36_0 path.py 11.5.0 py36_0 pathlib2 2.3.3 py36_0 patsy 0.5.1 py36_0 pcre 8.42 h378b8a2_0 pep8 1.7.1 py36_0 pexpect 4.6.0 py36_0 pickleshare 0.7.5 py36_0 pillow 5.4.1 py36hb68e598_0 pip 19.0.1 py36_0 pkginfo 1.5.0.1 py36_0 pluggy 0.8.1 py36_0 ply 3.11 py36_0 prometheus_client 0.5.0 py36_0 prompt_toolkit 2.0.8 py_0 psutil 5.5.0 py36h1de35cc_0 ptyprocess 0.6.0 py36_0 py 1.7.0 py36_0 py-lief 0.9.0 py36hd4eaf27_0 pycodestyle 2.5.0 py36_0 pycosat 0.6.3 py36h1de35cc_0 pycparser 2.19 py36_0 pycrypto 2.6.1 py36h1de35cc_9 pycurl 7.43.0.2 py36ha12b0ac_0 pyflakes 2.1.0 py36_0 pygments 2.3.1 py36_0 pylint 2.2.2 py36_0 pyodbc 4.0.25 py36h0a44026_0 pyopenssl 19.0.0 py36_0 pyparsing 2.3.1 py36_0 pyqt 5.9.2 py36h655552a_2 pysocks 1.6.8 py36_0 pytables 3.4.4 py36h13cba08_0 pytest 4.2.0 py36_0 pytest-arraydiff 0.3 py36h39e3cac_0 pytest-astropy 0.5.0 py36_0 pytest-doctestplus 0.2.0 py36_0 pytest-openfiles 0.3.2 py36_0 pytest-remotedata 0.3.1 py36_0 python 3.6.8 haf84260_0 python-dateutil 2.7.5 py36_0 python-libarchive-c 2.8 py36_6 python.app 2 py36_9 pytz 2018.9 py36_0 pywavelets 1.0.1 py36h1d22016_0 pyyaml 3.13 py36h1de35cc_0 pyzmq 17.1.2 py36h1de35cc_0 qt 5.9.7 h468cd18_1 qtawesome 0.5.6 py_0 qtconsole 4.4.3 py36_0 qtpy 1.6.0 py_0 readline 7.0 h1de35cc_5 requests 2.21.0 py36_0 rope 0.11.0 py36_0 ruamel_yaml 0.15.46 py36h1de35cc_0 scikit-image 0.14.1 py36h0a44026_0 scikit-learn 0.20.2 py36h27c97d8_0 scipy 1.2.0 py36h1410ff5_0 seaborn 0.9.0 py36_0 send2trash 1.5.0 py36_0 setuptools 40.7.3 py36_0 simplegeneric 0.8.1 py36_2 singledispatch 3.4.0.3 py36hf20db9d_0 sip 4.19.8 py36h0a44026_0 six 1.12.0 py36_0 snappy 1.1.7 he62c110_3 snowballstemmer 1.2.1 py36h6c7b616_0 sortedcollections 1.1.2 py36_0 sortedcontainers 2.1.0 py36_0 soupsieve 1.7.1 py36_0 sphinx 1.8.4 py36_0 sphinxcontrib 1.0 py36_1 sphinxcontrib-websupport 1.1.0 py36_1 spyder 3.3.2 py36_0 spyder-kernels 0.3.0 py36_0 sqlalchemy 1.2.17 py36h1de35cc_0 sqlite 3.26.0 ha441bb4_0 statsmodels 0.9.0 py36h1d22016_0 sympy 1.3 py36_0 tblib 1.3.2 py36hda67792_0 terminado 0.8.1 py36_1 testpath 0.4.2 py36_0 tk 8.6.8 ha441bb4_0 toolz 0.9.0 py36_0 tornado 5.1.1 py36h1de35cc_0 tqdm 4.29.1 py_0 traitlets 4.3.2 py36h65bd3ce_0 typed-ast 1.1.0 py36h1de35cc_0 unicodecsv 0.14.1 py36he531d66_0 unixodbc 2.3.7 h1de35cc_0 urllib3 1.24.1 py36_0 wcwidth 0.1.7 py36h8c6ec74_0 webencodings 0.5.1 py36_1 werkzeug 0.14.1 py36_0 wheel 0.32.3 py36_0 widgetsnbextension 3.4.2 py36_0 wrapt 1.11.0 py36h1de35cc_0 wurlitzer 1.0.2 py36_0 xlrd 1.2.0 py36_0 xlsxwriter 1.1.2 py36_0 xlwings 0.15.2 py36_0 xlwt 1.2.0 py36h5ad1178_0 xz 5.2.4 h1de35cc_4 yaml 0.1.7 hc338f04_2 zeromq 4.2.5 h0a44026_1 zict 0.1.3 py36_0 zlib 1.2.11 h1de35cc_3 zstd 1.3.7 h5bba6e5_0 ```

I have a base environment set-up using Anaconda which has my standard libraries (please see details above). Help and Code Autocomplete functions work perfectly fine here.

``` # Name Version Build Channel _tflow_select 2.3.0 mkl absl-py 0.7.0 py36_0 appnope 0.1.0 py36hf537a9a_0 astor 0.7.1 py36_0 backcall 0.1.0 py36_0 blas 1.0 openblas c-ares 1.15.0 h1de35cc_1 ca-certificates 2019.1.23 0 cctools 895 1 certifi 2018.11.29 py36_0 cffi 1.11.5 py36h6174b99_1 clang 4.0.1 1 clang_osx-64 4.0.1 h1ce6c1d_11 clangxx 4.0.1 1 clangxx_osx-64 4.0.1 h22b1bf0_11 cloudpickle 0.7.0 py_0 compiler-rt 4.0.1 hcfea43d_1 cycler 0.10.0 py36hfc81398_0 decorator 4.3.2 py36_0 freetype 2.9.1 hb4e5f40_0 gast 0.2.2 py36_0 grpcio 1.16.1 py36h044775b_1 h5py 2.9.0 py36h3134771_0 hdf5 1.10.4 hfa1e0ec_0 intel-openmp 2019.1 144 ipykernel 5.1.0 py36h39e3cac_0 ipython 7.2.0 py36h39e3cac_0 ipython_genutils 0.2.0 py36h241746c_0 jedi 0.13.2 py36_0 jpeg 9b he5867d9_2 jupyter_client 5.2.4 py36_0 jupyter_core 4.4.0 py36_0 keras 2.2.4 0 keras-applications 1.0.6 py36_0 keras-base 2.2.4 py36_0 keras-preprocessing 1.0.5 py36_0 kiwisolver 1.0.1 py36h0a44026_0 ld64 274.2 1 libcxx 4.0.1 hcfea43d_1 libcxxabi 4.0.1 hcfea43d_1 libedit 3.1.20181209 hb402a30_0 libffi 3.2.1 h475c297_4 libgfortran 3.0.1 h93005f0_2 libopenblas 0.3.3 hdc02c5d_3 libpng 1.6.36 ha441bb4_0 libprotobuf 3.6.1 hd9629dc_0 libsodium 1.0.16 h3efe00b_0 libtiff 4.0.10 hcb84e12_2 llvm 4.0.1 1 llvm-lto-tapi 4.0.1 1 markdown 3.0.1 py36_0 matplotlib 3.0.2 py36h54f8f79_0 mkl 2018.0.3 1 mkl-service 1.1.2 py36h6b9c3cc_4 mkl_fft 1.0.1 py36h917ab60_0 mkl_random 1.0.1 py36h78cc56f_0 ncurses 6.1 h0a44026_1 ninja 1.8.2 py36h04f5b5a_1 nomkl 3.0 0 numpy 1.15.4 py36h926163e_0 numpy-base 1.15.4 py36ha711998_0 olefile 0.46 py36_0 openssl 1.1.1a h1de35cc_0 pandas 0.24.1 py36h0a44026_0 parso 0.3.2 py36_0 pexpect 4.6.0 py36_0 pickleshare 0.7.5 py36_0 pillow 5.4.1 py36hb68e598_0 pip 19.0.1 py36_0 prompt_toolkit 2.0.8 py_0 protobuf 3.6.1 py36h0a44026_0 ptyprocess 0.6.0 py36_0 pycparser 2.19 py36_0 pygments 2.3.1 py36_0 pyparsing 2.3.1 py36_0 python 3.6.8 haf84260_0 python-dateutil 2.7.5 py36_0 pytorch 1.0.1 py3.6_2 pytorch pytz 2018.9 py36_0 pyyaml 3.13 py36h1de35cc_0 pyzmq 17.1.2 py36h0a44026_2 readline 7.0 h1de35cc_5 scikit-learn 0.20.2 py36hebd9d1a_0 scipy 1.2.0 py36h1a1e112_0 setuptools 40.7.3 py36_0 six 1.12.0 py36_0 spyder-kernels 0.4.2 py36_0 sqlite 3.26.0 ha441bb4_0 tensorboard 1.12.2 py36haf313ee_0 tensorflow 1.12.0 mkl_py36h2b2bbaf_0 tensorflow-base 1.12.0 mkl_py36h70e0e9a_0 termcolor 1.1.0 py36_1 theano 1.0.3 py36h04f5b5a_0 tk 8.6.8 ha441bb4_0 tornado 5.1.1 py36h1de35cc_0 traitlets 4.3.2 py36h65bd3ce_0 wcwidth 0.1.7 py36h8c6ec74_0 werkzeug 0.14.1 py36_0 wheel 0.32.3 py36_0 wurlitzer 1.0.2 py36_0 xz 5.2.4 h1de35cc_4 yaml 0.1.7 hc338f04_2 zeromq 4.3.1 h0a44026_3 zlib 1.2.11 h1de35cc_3 zstd 1.3.7 h5bba6e5_0 ```

However, in my (deeplearning) environment (above), where I installed Keras, Tensorflow, Theano, for some reason Help and Code Autocomplete does not work.

I'm using Spyder 3.3.2 (and have use Conda for all installations). Any help (no pun intended) will be really appreciated!

CAM-Gerlach commented 5 years ago

My help and autocomplete does not work but only for the Keras library.

For many functions in some packages, like keras and pandas that are just wrappers to C++ extension modules, the jedi library that Spyder uses to get docstrings may not be able to retrieve them. Unfortunately, this is a fundamental limitation of the design of the specific packages themselves, and thus there isn't much Spyder can do about this. Try triggering help from the Console instead (after first importing the package of interest).

DiegoF90 commented 5 years ago

So it looks like the issue is fixed by updating to the most recent version through conda. Very sadly, due to my company policies, I am unable to update using this but only through packages found in a trusted repo and using pip install. Naively, I updated Spyder using 'pip' which ended up breaking my whole configuration. Is it possible to get a list of python packages and their version such that they are compatible with Spyder and do not produce the issue above? or alternatively, a list of packages and their version such that it is known that they break spyder?

mingwandroid commented 5 years ago

I am unable to update using this but only through packages found in a trusted repo and using pip install

I hope the massive irony of 'trusted repo' and 'pip install' has not escaped you?

ccordoba12 commented 5 years ago

@DiegoF90, that list is in our Readme for our main dependencies:

https://github.com/spyder-ide/spyder/blob/3.x/README.md

However, each of these packages brings their own dependencies. So, in total, Spyder depends on ~90 packages (last time I checked).

CAM-Gerlach commented 5 years ago

Needless to say, your company requiring pip over authoritative, curated conda channels for "security" is moronic to the point of lunacy.

Is it possible to get a list of python packages and their version such that they are compatible with Spyder and do not produce the issue above?

As @ccordoba12 implies above, the issue is not with Spyder not being compatible with its direct dependencies (principally jedi in this case) but rather those dependencies not being fully compatible with the matrix of their (and other packages') dependencies (and of course, that's what makes this issue so tricky to solve for us and for users and one we hope the comprehensive overhaul of the completion infrastructure in Spyder 4 will help alleviate. As any issue with dependency specifications thus would need to be resolved by those packages, not Spyder, there isn't much we can directly do about it.

This is why we recommend you generally stick to the versions that are pinned to each version of distributions like Anaconda, that are tested together for full functionality, and only update spyder and very specific packages that you need need a particular bug fix or new feature beyond that.