之前成功的经验:
- pyenv
- pyenv-virtualenvwrapper
- WORKON_HOME
上面这些都设置好之后,就可以用EMACS的 (pyvenv-workon)
来激活虚拟环境
新的问题:
最近重装系统,从 bash 换到 fish,遇到以下问题:
- fish 下设置 pyenv 和 bash 下有很大不同
- pyenv-virtualenvwrapper 并没有提供 fish 下的安装设置方法,并且代码已有三年未更新,于是换到 pyenv 推荐的 pyenv-virtualenv 插件来管理虚拟环境
- 无法使用 emacs 的 pyvenv 来激活 pyenv-virtualenv 创建的虚拟环境
大家有遇到这个问题吗?又是怎样解决的呢?
突然发现 fish 给我带来的麻烦比想象中更多
几年的使用习惯真的不是一朝一夕就能改变的
召唤用 fish 的大佬(如果我没记错的话 ), @twlz0ne
可不可以采取 pyvenv (instead of pyenv) + conda
的方式?
我在spacemacs中,切换python virtual 环境是这样展开的。自己配置emacs.d的时候,也继续这样的方式。
我可能还是被 fish 的特性给坑了,刚刚定位到原因可能是 spacemacs 的内置函数因为 fish 的 greeting 消息坏掉了。等下解决了在这里分享一下情况。
1 个赞
(defun spacemacs/pyenv-executable-find-advice (orig-fun command)
(if (executable-find "pyenv")
(progn (message "found pyenv")
"ipython")
(executable-find command)))
(advice-add 'spacemacs/pyenv-executable-find :around #'spacemacs/pyenv-executable-find-advice)
(defun spacemacs//python-setup-shell-advice (orig-fun &rest args)
(setq python-shell-interpreter "ipython")
(setq python-shell-interpreter-args "--simple-prompt -i --pylab=qt --gui=qt")
)
(advice-add 'spacemacs//python-setup-shell :around #'spacemacs//python-setup-shell-advice)
写了两个 advice 放到 user-init 里,问题解决。
虽然带来了这些麻烦,不过 fish 的 greeting message 看着是挺酷炫就是了
其实最方便的还是在项目根目录下:pyenv local [指定的python解释器标签]
1 个赞
嗯嗯,我自己也是很喜欢spacemacs的绑定。我最近实验看到,其实可以完全利用usage-package,结合general 设置一样的key-binding。 (我比较喜欢的一个是SPC作为leader key,一个是window的切换,再者是逗号作为major-mode leader key。)
1 个赞
可以用zsh,zsh我感觉已经足够好了,fish的很多特性在zsh里装个插件也能得到,而zsh至少语法和bash很像
用virtualenv/virtualenvwrapper管理python虚拟环境最简单的办法:
- 在shell下先启动虚拟环境,workon 虚拟环境名 进入虚拟环境
- 在虚拟环境下启动emacs/vim/nvim等编辑器,正常使用代码编辑功能
et2010
12
现在连 workon 都不需要了,直接 pyenv global myvenv
了(当然也可以 pyenv local
),进入 emacs (不一定从终端启动,也可以从桌面启动) 时自动进入虚拟环境。
我这个帖子里的问题主要是 fish 的启动信息造成的,也已经在坛友的帮助下解决了。
在 fish 下 source (pyenv init - | psub)
无效吗?
虽然我主用 fish,但系统默认还是 bash,主要配置的也是 bash。
我只在 tmux 中使用 fish。但我的 Iterm2 也只开两个 bash 窗口实例:一个运行 tmux,一个运行 Emacs。所以我也算全天使用 fish。
采用这个策略也是早期被 fish 坑过。这样一旦出问题可退回 bash。
从 bash 进入 fish,除了 XXXenv 需要重新初始化之外,大部分设置都正常继承。
1 个赞
之前我是纠结过在emacs/vim中如何管理虚拟环境的问题,在emacs中用pyenv管理很方便,vim中有些难处理,后来想通了直接在shell中切到虚拟环境下再启动编辑器,不就和使用系统默认的一个玩法了,是粗鲁了点了,好用就行