emacs里面运行Python文件提示找不到自编的模块

我一个python项目里的文件,import了本项目另一个自编的python文件模块。在Pycharm下运行没有问题,在emacs里面我按C-c C-p C-c C-c运行,提示找不到import的那个模块。

ModuleNotFoundError: No module named ‘tools’

在pycharm里可以设置source root或者workspace,emacs里面要如何设置?

这个和 emacs 或者 pycharm 没啥关系吧,如果是运行,就把路径加到 sys.path 中:

import sys
sys.path.append('当前的项目根路径')
1 个赞

楼主提供的信息太少了,用的是啥?LSP?Anaconda?python有没有使用虚拟环境?emacs 用的是vanilla?spacemacs?doom?操作系统是Linux还是windows还是mac?

这些基本信息都不提供的话,别人想帮你也帮不到啊。

相比github和SO,论坛是把提问的门槛降低了,但是我们自己要自律不是?这样可以帮助别人也顺便帮助自己节省时间。

楼上您好,我用的是debian10,emacs26.1,使用了anaconda-mode,python3.8

sys.path.append这样可能是可以解决问题,但是,我项目里文件运行每次都需要这样操作,很麻烦不是吗?

  • Pycharm 看起来简单,很可能也是帮你封装了类似的语句,比如临时修改了 PYTHONPATH 这个环境变量,使得你觉得你在pycharm里面用起来很直接? 我不了解pycharm里面做这个的机制,只是这么猜测。这是我简单搜索到的一个stack overflow的解释

  • 如果二楼的解决对你来说,不美观,你可以考虑加入修改PYTHONPAH这个环境变量。我其实觉得二楼的方法,好处是你share你的代码给你别人,或者你在其他没有pycharm的地方,代码本身还是可以执行的。

  • 如果你想修改环境变量,purcell的exec-path-from-shell,可以帮你确保emacs读取到正确的环境变量。