这个跟emacs没太大关系 其实就是direnv 的作用,如果你喜欢这个工具的话
这是一个.envrc的配置
export VIRTUAL_ENV=$HOME/python/venv
layout python-venv python3.6
export PYTHONPATH=$PYTHONPATH:$HOME/repos/myproject
第一行添加了虚拟环境的目录,第二行是个工具激活虚拟环境,是老版本的做法,但是我习惯了,第三行添加一些额外的包检索目录
另外我用pyright,因为是js实现的,我可以用npm全局安装,就不需要每个虚拟环境去安装一个python的pyls之类的包了,保持环境干净
再另外,如果你也用doom的话,+flag里面有很多预置的,如 conda/pipenv/poetry 之类的,可以探索一下,找到自己的使用习惯
再补充下上面direnv第二行配置的wiki ,刚找了下想起来了,是因为新版本有自己的虚拟环境管理方式,而我习惯自己管理虚拟环境,所以用了wiki里面的老方法
最后再补充一个,就是.envrc 这个文件也会污染项目目录,可以添加到.git/info/exclude
里面排除掉。如果你也用magit的话,I p 即可编辑(magit-gitignore)
看来您对这方面很有经验,还请多指点一下
doom怎么处理这个虚拟环境?有教程文章吗
还有,我在尝试用add-dir-local-variable
的时候,没有发现一个可以设置的变量是lsp-register-custom-settings
add-dir-local-variable
→ python-mode
→ eval
nesteiner:
doom怎么处理这个虚拟环境?有教程文章吗
没咋用过 doom,你直接看 Emacs 咋处理的就好
PS 用上面的 direnv 应该也是可以的,我之前嫌弃切换目录有点卡,就没用了。
我的项目跟目录里也有个.emacs.d文件夹了,是否把这个配置文件放到项目的.emacs.d文件夹里?另外,在eshell下似乎也用不了conda命令。
yinxiuqu:
我的项目跟目录里也有个.emacs.d文件夹了
.emacs.d 只要放到 $HOME 下就好了呀?.dir-locals.el
是放到项目目录下的。
如果是 Mac GUI 下需要这个插件 GitHub - purcell/exec-path-from-shell: Make Emacs use the $PATH set up by the user's shell 来加载路径。
所以这是为啥我建议你从成熟配置开始的原因🤣,它们都帮你处理好了
好的,谢谢。我正在学gnu emacs和Lisp语言。
这个设置直接用M-x shell可以进入虚拟环境了,eshell不行。就用shell就可以,谢谢。
这个设置放到项目根目录下,根本不产生任何作用,没有任何变化。
你想要啥变化。。。只是一个示例,如果在项目目录下打开 python 文件,会执行后面的命令罢了,如果你不用 lsp 自然没啥用?
项目根目录下的子目录里打开python文件执行,并没用使用这个el文件指定的虚拟python解释器,仍然是用系统的python。
说实话,我觉得对话可能没法继续进行下去。比如说怎么执行的,(e)shell 里面 输入 python?你每次都不描述清楚具体步骤,然后让人猜。
如果你是希望打开 shell 或者 eshell 使用特定的 Conda env,你有用过 GitHub - necaris/conda.el: Emacs helper library (and minor mode) to work with conda environments 么?可以通过这个包的函数手动切换么?如果用过不行,你做了什么,配置是怎么样的,是哪一步遇到了问题?
不好意思,我没说清楚。我是这样操作的,M-x shell进去后,直接是conda虚拟环境的基本环境(base),可以用conda命令切换环境。但如果M-x eshell进去后,不是(base)基本环境,也不能conda命令切换环境。我装了anaconda-mode的,还必须再装一个conda.el吗?
参考这个帖子 Emacs builtin mode 功能介绍 - #83,来自 Youmu eshell
则是完全由 elisp 实现的 shell,语法与与 bash/zsh 的语法不完全一致,所以不支持 conda 命令?
anaconda-mode 和 conda 没啥关系(我也不知道他为啥取这个名字),是提供代码导航,补全等功能的一个包,虽然现在可能更建议用 lsp(看个人喜好)。
conda.el 这个包才是帮助在 Emacs 中与 conda 环境交互的,具体使用请阅读 README,你先确保能通过 M-x conda-env-activate
和 M-x conda-env-deactivate
activate 或 deactivate,再考虑自动的事情 GitHub - necaris/conda.el: Emacs helper library (and minor mode) to work with conda environments
另外如果只是希望命令行自动切换,也可以使用 direnv 这个工具
1 个赞
谢谢了,我是被anaconda-mode的名字误导了。
conda.el官方说明里,把下面的语句
(custom-set-variables
'(conda-anaconda-home “~/anaconda3/”))
换成下面这个
(setq conda-anaconda-home (expand-file-name “~/anaconda3”))
就可以用了。第一个句式为何会出错?
现在可以M-x conda-env-activate RET quantaxis RET了,但是一直在loading
custom-set-variables 一般通过 M-x customize
设定,不手动修改,你就用 setq 好了。确定 anaconda 路径是你的,别的就不知道为啥一直 loading 了,我这边正常。
loading完毕了,现在手动M-x conda-env-activate RET quantaxis RET都正常了。M-x eshell RET仍然不能使用conda命令
你加了这两句了么:
;; if you want interactive shell support, include:
(conda-env-initialize-interactive-shells)
;; if you want eshell support, include:
(conda-env-initialize-eshell)
已经是虚拟环境了。非常感谢。还有个问题没解决,在我自己项目下的自编python模块,导入时总是提示:ModuleNotFoundError: No module named ‘tools’
不知道怎么回事。
这是 Python 的问题吧,检查 sys.paths?