syl20bnr / spacemacs

A community-driven Emacs distribution - The best editor is neither Emacs nor Vim, it's Emacs *and* Vim!
http://spacemacs.org
GNU General Public License v3.0
23.66k stars 4.89k forks source link

Python configuration in Spacemacs #16298

Closed LittFlower closed 3 months ago

LittFlower commented 7 months ago

Hello everyone! I am newcomer of Spacemacs. And this "issue" is target to get some suggestion not bugs....

Can someone share their Python configuration in Spacemacs? I also have a need to write some small Python scripts for temporary use and large Python projects. I don't want too strict syntax conventions or checks for the former, and I want to write Python code in the left window and test the functionality of code snippets in the right window (Python)? Do you have any good configurations?

Some potentially useful information as follows:

I really need some suggestions or reference links about these requirements, and I would be grateful for any help :)

ryanprior commented 7 months ago

Hi @LittFlower, great to have you here! I suggest creating a discussion in this repo (link: https://github.com/syl20bnr/spacemacs/discussions) as the Issues are only meant to be used for problems and development, while the Discussions are for open ended questions.

(Here's my answer, and I'll move it into a response in Discussions if you follow my advice above 😄)

My Python configuration is quite short, since the Python layer already has a really useful default configuration. I have this in my Spacemacs dotfile:

   dotspacemacs-configuration-layers
   '((python :variables
             python-backend 'lsp
             python-lsp-server 'pyright
             python-shell-interpreter "ipython"
             importmagic-python-interpreter "python3")
     )

# then later...
(use-package python-pytest :init
    (spacemacs/set-leader-keys-for-major-mode 'python-mode "td" #'python-pytest-dispatch))

I also use direnv with direnv-mode to automatically activate my Python virtual environments.

I use M-x python-pytest-dispatch (which you can see I bind to SPCtd) to run my Python tests during development, and I use M-x spacemacs/python-start-or-switch-repl (bound to SPCm' by default) to create an interactive Python REPL for experimentation.

Hope this helps! Keep asking questions, and let us know if you have any ideas for contributions you'd like to make.

LittFlower commented 7 months ago

sincerely thank you. I will contribute to Spacemacs if i am able to.

LittFlower commented 6 months ago

@ryanprior Thanks for your help. I have configured my dotfile according your code as follows:

   dotspacemacs-configuration-layers
   '((python :variables
             python-backend 'lsp
             python-lsp-server 'pyright
             python-shell-interpreter "ipython"
             importmagic-python-interpreter "python3"
             )

and I configured this in my user-config():

  ;; python ide 配置
  (use-package pytest :init
    (spacemacs/set-leader-keys-for-major-mode 'python-mode "td" #'python-pytest-dispatch))
  (setq python-shell-completion-native-enable nil)

However, when I typed SPC m ' in a Python script, the following warning popped up in the left window:

Warning (python): Your ‘python-shell-interpreter’ doesn’t seem to support readline, yet ‘python-shell-completion-native-enable’ was t and "ipython" is not part of the ‘python-shell-completion-native-disabled-interpreters’ list.  Native completions have been disabled locally. Consider installing the python package "readline". 

I had searched this warnning and added this code in my user-config() :

(setq python-shell-completion-native-enable nil)

I don't know if this is the best practice, but warning has indeed disappeared. But when I used SPC m ' and tried to interact with the ipython on the right side, things became very strange.

spot

Firstly, I don't know what is in the lower half of the window in the picture, as it occasionally pops up when I write the script. Secondly, the iPython interaction environment on the right is very abnormal, as it seems to copy the last character and repeat my input before giving output, and the preceding sequence number is skipped And cannot share the code content on the left side.

I have no idea about this. can you give me more advice? :)

here is my dotfile.

ryanprior commented 6 months ago

@LittFlower oh my that doesn't look nice.

If you change python-shell-interpreter "ipython" to python-shell-interpreter "python3" does that work any better? I think that ipython support might not be in a good state anymore. I just tried it with "python3" in my Spacemacs and it's working fine with completions (which didn't use to be the case)

LittFlower commented 6 months ago

Wuuuu......Could you read Chinese? Or use a translation tool to view this page? I'm very happy with the configuration in this page. But it is in emacs not spacemacs... How can I use/convert the configuration in spacemacs as a spacemacs-er? @ryanprior

smile13241324 commented 3 months ago

Hmm this sounds very strange.

The message in the lower part of your screen looks like a python script which is to be evaluated at run time not sure why this is shown in the UI though but it shows a python file I don't know.

My config is below:

     (python :variables
             python-backend 'lsp
             python-lsp-server 'pylsp
             python-test-runner 'pytest
             python-formatter 'lsp
             python-format-on-save t
             python-save-before-test t
             python-sort-imports-on-save t)

This works fine on my side, I am on manjaro, this should be near enough to arch for comparison. Could it be that import-magic is causing this? I am not using it for it is really outdated now but I have seen you have configured the python interpreter.

Also it would be interesting if you running a stock emacs release or your own build. If you run your own build please retry with a stock build.

smile13241324 commented 3 months ago

Closed due to inactivity