Python 解释器路径问题

比如:

import pandas as pd

spacemacs 中会报错,ImportError, 找不到这个 module. 但是同样的文件在 vim 中并没有问题,应该是 spacemacs 中 python 的相关问题。 请问大家是如何设置的,或者该如何解决?


在解决该问题后才发现在 spacemacs 启动时会有这样的提示信息:

You appear to be setting environment variables ("PATH" "MANPATH") in your .bashrc or .zshrc: those files are only read by interactive shells, so you should instead set environment variables in startup files like .profile, .bash_profile or .zshenv.  Refer to your shell’s man page for more info.  Customize ‘exec-path-from-shell-arguments’ to remove "-i" when done, or disable ‘exec-path-from-shell-check-startup-files’ to disable this message.

如果留意提示信息其实已经给出了解决问题的思路。

1 个赞

你用的是 mac 吗?你在终端执行一个 python -c 'import pandas as pd' 看看输出是什么?

执行这句没有问题。

你用 SPC b b 切换到 *anaconda-mode* 这个 buffer,看看里面有报什么错。

另外,只是 pandas 不能 import,还是所有的系统库也不能 import?

SPC b b 没有 *anaconda-mode* 这个 buffer, 不过 *Messages* 中似乎有端倪:

save-current-buffer: Symbol’s value as variable is void: python-shell--interpreter

有些库是正常的, 比如 scipy, 有些不行, 比如 seaborns。 我使用的是 anaconda3.

感觉你的配置哪里有问题,你有对 spacemacs 的 python layer 做扩展吗? 另外,你用的是什么版本的 spacemacs,?

[email protected]

只是启用了 python layer, 并没有做什么额外的配置。

这里 是我的 spacemacs 配置,关于 python 应该没有什么特定的定制。

现在有 *anaconda-mode* buffer 了,不过并没有什么报错,只有一行:

anaconda_mode port 56848

如果是这样,理论上应该可以补全才是。

可以查看现有的 python 解释器路径吗?

試試這個 Changing python interpreter for emacs - Stack Overflow

可能找到原因了,不过还是无法解决。spacemacs 使用的 python 似乎是 /usr/bin/python, 按道理应该是 ~/anaconda3/bin/python, 不过试了很多修改 python interpreter 的方法都无效,您有试过修改 python 解释器路径?或者有朋友操作成功的吗?

你修改 PATH 变量,把你的 python 的 search 路径放到 PATH 的最前面试试

这个试过,无效。/etc/bashrc, /etc/zshrc, ~/.bashrc, ~/.zshrc, 全都试过。。。terminal 中是没有问题的,但是 spacemacs 中不知道是出了什么问题。

看看emacs的exec-path和系统PATH有没有不一样?

额。。。 具体怎么操作?怎么查看 exec-path?

C-h v看这个variable

谢谢。的确是不一样。不知道这是哪里读取的变量,跟 PATH 差的有点远,偏偏把 ~/anaconda3/bin 遗漏了,有什么办法设置这个变量吗?

尝试设置了一下,不过 user-init 中设置的话似乎已经晚了。

已解决:

spacemacs 所读取的似乎是 .bash_profile 中的内容,因为当我在里面加入export PATH=$HOME/anaconda3/bin:$PATH spacemacs 中就没问题了。


后期又出现一次问题,这次把 export PATH=$HOME/anaconda3/bin:$PATH 写入 .zshenv中。

按照您的方案,依旧没有效果。楼主求救。唯一不同的是,我用的是fish。我把 export PATH="/opt/anaconda3/bin:$PATH"写入了.bash_profile fish的配置文件。依旧没啥效果。哭晕在厕所。不就是个路径吗?死活设置不上,我也是服了。

fish 是不能这样设置 PATH 的,给你照个链接参考吧。

里面还提到 fish 有个图形化配置界面。

1 个赞

我很少用 fish, 不过 fish 的配置文件应该是 ~/.config/fish/config.sh, fish 也没有 export 命令, 而是用 set , 看一下 fish 官方文档 改一下就可以了.