0

I am using Emacs 30.1 on MacOS and have configured Elpy. The auto complete popup is working properly in python file (for e.g. typing 'a'.l shows me below popup ).

Auto complete popup in python file

However, when I type 'a'.l in the IPython shell, I don't get any popup with suggestions.

If I press TAB, I am getting the suggestions in the Completions buffer as shown below (how to get popup like python code above?),

Completions buffer for ipython

Here is my elpy-config,

Elpy Configuration Emacs.............: 30.1 Elpy..............: 1.35.0 Virtualenv........: quest (/Users/amit_tendulkar/venv/quest/) Interactive Python: ipython 9.4.0 (/Users/amit_tendulkar/venv/quest/bin/ipython) RPC virtualenv....: rpc-venv (/Users/amit_tendulkar/.emacs.d/elpy/rpc-venv) Python...........: python3 3.9.6 (/Users/amit_tendulkar/.emacs.d/elpy/rpc-venv/bin/python3) Jedi.............: 0.19.2 Autopep8.........: 2.3.2 Yapf.............: 0.43.0 Black............: 25.11.0 Syntax checker....: flake8 (/Users/amit_tendulkar/venv/quest/bin/flake8) Warnings Options `Raised' text indicates buttons; type RET or click mouse-1 on a button to invoke its action. Invoke [+] to expand a group, and [-] to collapse an expanded group. Invoke the [Group], [Face], and [Option] buttons below to edit that item in another window. [+]-- Group Elpy [+]-- Group Python [+]-- Group Virtual Environments (Pyvenv) [+]-- Group Completion (Company) [+]-- Group Call Signatures (ElDoc) [+]-- Group Inline Errors (Flymake) [+]-- Group Code folding (hideshow) [+]-- Group Snippets (YASnippet) [+]-- Group Directory Grep (rgrep) [+]-- Group Search as You Type (ido) [+]-- Group Django extension [+]-- Group Autodoc extension 

I have initialized Elpy as follows,

(straight-use-package 'pyenv) (straight-use-package 'auto-complete) (straight-use-package 'jedi) (straight-use-package 'elpy) (straight-use-package 'projectile) ;; for elpy -- M-x jedi:install-server (straight-use-package 'epc) (straight-use-package 'deferred) (require 'epc) (require 'pyvenv) ;; auto-complete -- needed for jedi (require 'auto-complete) ;; Jedi.el for Python auto-completion (require 'jedi) ;; elpy - Python IDE (load "elpy") (load "elpy-rpc") (load "elpy-shell") (load "elpy-profile") (load "elpy-refactor") (load "elpy-django") ;; projectile - needed for elpy (require 'projectile) (pyvenv-activate "~/venv/quest") ;; Support for ipython (when (executable-find "ipython") (setq python-shell-interpreter "ipython" python-shell-interpreter-args "-i --simple-prompt" )) (elpy-enable) (setq elpy-rpc-backend "jedi") 

Edit on 12 Nov 2025: Upon suggestion from @Ian I switched to Eglot (as Elpy is outdated). But at the high level the issue still remains. Please let me know if you find any configuration missing below.

I used to company-mode for completion.

Here is the updated configuration,

(straight-use-package 'pyvenv) (straight-use-package 'company) (require 'pyvenv) (require 'company) (add-hook 'after-init-hook 'global-company-mode) (pyvenv-activate "~/venv/quest") ;; Support for ipython (when (executable-find "ipython") (setq python-shell-interpreter "ipython" python-shell-interpreter-args "-i --simple-prompt" )) 

Now I am getting popup menu with suggestions in Python file after the following steps,

  • Run M-x eglot while in the Python buffer (required only first time).
  • It asks me for lsp server program name. I simply press enter to use pylsp.
  • Now typing os. shows me the os module's functions and variables

I am not getting any suggestions in IPython with the below steps,

  • Run M-x run-python, I get switched to IPython shell.
  • Run M-x eglot while in ipython shell (needed only for the first time)
  • It asks me for the mode name. I enter inferior-python-mode
  • Next, it asks me for lsp server program name. I enter pylsp RET.
  • However, after typing import os followed by os., I got the popup menu with the current list of files completion containing o, s and . characters but not the functions from the os module.

IPython shell showing filenames in completion

Any tips?

2
  • 1
    Two observations: 1) do not use Elpy, it is not maintained anymore ATM. Instead, there is Eglot, built-in Emacs 29/30, just start it with M-x eglot and see how it works. Of coarse, you can add some configurations. 2) Python 3.9 is near EOL, try another version, 3.13/3.14; starting wit 3.11 Python was improved and added modifications. Commented Nov 11 at 13:05
  • Thanks @Ian. I wasn't aware of eglot and going through its documentation. Python 3.9 was installed internally by Elpy. I am using Python 3.13.2 inside my venv. Commented Nov 12 at 3:12

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.