necaris / conda.el

Emacs helper library (and minor mode) to work with conda environments
MIT License
153 stars 49 forks source link

Invalid version syntax #154

Open Simon-chevolleau opened 7 months ago

Simon-chevolleau commented 7 months ago

Expected behavior

conda-env-activate should activate a conda environment after, interactively, selecting it.

Experienced behavior

An error is returned, specifying the version 4.8.3 + a string: "can't". However, I don't fully understand from which application this version is related to.

Error

Debugger entered--Lisp error: (error "Invalid version syntax: ‘can't’ (must start with a...")
  signal(error ("Invalid version syntax: ‘can't’ (must start with a..."))
  error("Invalid version syntax: `%s' (must start with a nu..." "can't")
  version-to-list("can't")
  version<("4.8.3" "can't")
  conda--supports-json-activator()
  (if (conda--supports-json-activator) (let ((result (conda--call-json-subcommand "activate" env-dir))) (make-conda-env-params :path (s-join path-separator (alist-get 'PATH (alist-get 'path result))) :vars-export (alist-get 'export (alist-get 'vars result)) :vars-set (alist-get 'set (alist-get 'vars result)) :vars-unset (alist-get 'unset (alist-get 'vars result)) :scripts-activate (alist-get 'activate (alist-get 'scripts result)) :scripts-deactivate (alist-get 'deactivate (alist-get 'scripts result)))) (if (not (conda--supports-old-activate-format)) (error "Installed Conda version supports neither JSON nor ...") (make-conda-env-params :path (concat (conda--get-deprecated-path-prefix env-dir) path-separator (getenv "PATH")))))
  conda--get-activation-parameters("/home/simon/anaconda3/envs/python/")
  (let ((params (conda--get-activation-parameters env-dir)) (inhibit-message t)) (if (not (eq nil (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... params))) (aref params 2)))) (conda--update-env-from-params params) (progn (setenv "VIRTUAL_ENV" env-dir) (setenv "CONDA_PREFIX" env-dir))) (setq exec-path (s-split (if (eq system-type 'windows-nt) ";" ":") (progn (or (progn (and (memq ... cl-struct-conda-env-params-tags) t)) (signal 'wrong-type-argument (list 'conda-env-params params))) (aref params 1)))) (message "new path? %s" (progn (or (progn (and (memq (type-of params) cl-struct-conda-env-params-tags) t)) (signal 'wrong-type-argument (list 'conda-env-params params))) (aref params 1))) (setenv "PATH" (progn (or (progn (and (memq (type-of params) cl-struct-conda-env-params-tags) t)) (signal 'wrong-type-argument (list 'conda-env-params params))) (aref params 1))))
  (let* ((env-dir (expand-file-name env-path)) (env-exec-dir (concat (file-name-as-directory env-dir) conda-env-executables-dir))) (pythonic-activate env-dir) (setq python-shell-virtualenv-root env-dir) (let ((params (conda--get-activation-parameters env-dir)) (inhibit-message t)) (if (not (eq nil (progn (or (progn ...) (signal ... ...)) (aref params 2)))) (conda--update-env-from-params params) (progn (setenv "VIRTUAL_ENV" env-dir) (setenv "CONDA_PREFIX" env-dir))) (setq exec-path (s-split (if (eq system-type 'windows-nt) ";" ":") (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... params))) (aref params 1)))) (message "new path? %s" (progn (or (progn (and (memq ... cl-struct-conda-env-params-tags) t)) (signal 'wrong-type-argument (list 'conda-env-params params))) (aref params 1))) (setenv "PATH" (progn (or (progn (and (memq ... cl-struct-conda-env-params-tags) t)) (signal 'wrong-type-argument (list 'conda-env-params params))) (aref params 1)))) (setq eshell-path-env (getenv "PATH")) (conda--set-env-gud-pdb-command-name) (run-hooks 'conda-postactivate-hook))
  (if (not (conda--env-dir-is-valid env-path)) (error "Invalid conda environment path specified: %s" env-path) (conda-env-deactivate) (setq conda-env-current-path env-path) (setq conda-env-current-name (conda-env-dir-to-name env-path)) (set (make-local-variable 'conda-project-env-path) env-path) (run-hooks 'conda-preactivate-hook) (add-to-list 'conda-env-history conda-env-current-name) (let* ((env-dir (expand-file-name env-path)) (env-exec-dir (concat (file-name-as-directory env-dir) conda-env-executables-dir))) (pythonic-activate env-dir) (setq python-shell-virtualenv-root env-dir) (let ((params (conda--get-activation-parameters env-dir)) (inhibit-message t)) (if (not (eq nil (progn (or ... ...) (aref params 2)))) (conda--update-env-from-params params) (progn (setenv "VIRTUAL_ENV" env-dir) (setenv "CONDA_PREFIX" env-dir))) (setq exec-path (s-split (if (eq system-type 'windows-nt) ";" ":") (progn (or (progn ...) (signal ... ...)) (aref params 1)))) (message "new path? %s" (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... params))) (aref params 1))) (setenv "PATH" (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... params))) (aref params 1)))) (setq eshell-path-env (getenv "PATH")) (conda--set-env-gud-pdb-command-name) (run-hooks 'conda-postactivate-hook)))
  (let ((env-path (or path (read-directory-name "Conda environment directory: ")))) (if (not (conda--env-dir-is-valid env-path)) (error "Invalid conda environment path specified: %s" env-path) (conda-env-deactivate) (setq conda-env-current-path env-path) (setq conda-env-current-name (conda-env-dir-to-name env-path)) (set (make-local-variable 'conda-project-env-path) env-path) (run-hooks 'conda-preactivate-hook) (add-to-list 'conda-env-history conda-env-current-name) (let* ((env-dir (expand-file-name env-path)) (env-exec-dir (concat (file-name-as-directory env-dir) conda-env-executables-dir))) (pythonic-activate env-dir) (setq python-shell-virtualenv-root env-dir) (let ((params (conda--get-activation-parameters env-dir)) (inhibit-message t)) (if (not (eq nil (progn ... ...))) (conda--update-env-from-params params) (progn (setenv "VIRTUAL_ENV" env-dir) (setenv "CONDA_PREFIX" env-dir))) (setq exec-path (s-split (if (eq system-type ...) ";" ":") (progn (or ... ...) (aref params 1)))) (message "new path? %s" (progn (or (progn ...) (signal ... ...)) (aref params 1))) (setenv "PATH" (progn (or (progn ...) (signal ... ...)) (aref params 1)))) (setq eshell-path-env (getenv "PATH")) (conda--set-env-gud-pdb-command-name) (run-hooks 'conda-postactivate-hook))) (if (or conda-message-on-environment-switch (called-interactively-p 'interactive)) (message "Switched to conda environment: %s" env-path)))
  conda-env-activate-path("/home/simon/anaconda3/envs/python/")
  (let* ((env-name (or name (conda--read-env-name))) (env-dir (conda-env-name-to-dir env-name))) (conda-env-activate-path env-dir))
  conda-env-activate()
  funcall-interactively(conda-env-activate)
  call-interactively(conda-env-activate record nil)
  command-execute(conda-env-activate record)
  execute-extended-command(nil "conda-env-activate" #("conda ac" 0 8 (ws-butler-chg chg)))
  funcall-interactively(execute-extended-command nil "conda-env-activate" #("conda ac" 0 8 (ws-butler-chg chg)))
  call-interactively(execute-extended-command nil nil)
  command-execute(execute-extended-command)

Config

(use-package! conda
  :custom
  (conda-anaconda-home "/home/simon/anaconda3")
  :init
  (conda-env-initialize-interactive-shells)
  (conda-env-initialize-eshell)
  (conda-env-autoactivate-mode t)
  )

Environment

OS: Ubuntu 24.04 Emacs: 29.1 Doom core: v3.0.0-pre HEAD -> master 03d692f1 2023-12-08 15:11:45 -0500 Doom modules: v23.12.0-pre HEAD -> master 03d692f1 2023-12-08 15:11:45 -0500 conda: 23.7.4 conda.el (MELPA): 20231109.219

necaris commented 7 months ago

It looks like an issue with conda itself -- can you show the output of conda -V in your terminal?

Simon-chevolleau commented 7 months ago

Here is my versions:

WhoisDonlee commented 6 months ago

I have a similar error. I think it's unrelated to conda.el.

version<("4.8.3" "can't") checks if your conda version is higher than 4.8.3 by running conda -V in a new shell. conda.el grabs the second value, which should be the conda version. Instead, opening a new shell yields an error and "can't" is the second value.

Opening vterm probably shows the error that's causing the issue.

WhoisDonlee commented 6 months ago

https://github.com/conda/conda/issues/13451 https://github.com/microsoft/vscode-python/issues/22752

For me it was an issue with the conda python plugin, which unsets the CONDA_PREFIX variable. Setting the CONDA_PREFIX env var fixed it for me.

necaris commented 6 months ago

Ooh, thank you for digging!—Rami Chowdhury“A mind all logic is like a knife all blade - it makes the hand bleed that uses it.” - Rabindranath TagoreOn Jan 16, 2024, at 05:03, Dennis Dollée @.***> wrote: conda/conda#13451 microsoft/vscode-python#22752 For me it was an issue with the conda python plugin, which unsets the CONDA_PREFIX variable. Setting the CONDA_PREFIX env var fixed it for me.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>