小编典典

为什么SublimeREPL无法导入Python模块或读取CWD中的文件?

python

我使用的是 崇高的文本3 生成3126对 Ubuntu的灿烂SublimeREPL 插件。

我使用 CTRL + SHIFT + P >> SublimeREPL 打开Python REPL :Python, 并使用 CTRL
+,F

和everything将文件发送到REPL,只要我使用单个Python脚本文件即可。一旦我尝试将代码的某些部分移至另一个模块并将其导入主文件中,就会收到讨厌的
ImportError:没有名为 error的 模块

尝试使用以下命令打开位于同一目录中的文本文件:

codecs.open('filename', encoding='utf-8')

结果是:

 IOError: [Errno 2] No such file or directory: 'filename'

阅读 235

收藏
2021-01-20

共1个答案

小编典典

您是否调查了打开 SublimeREPL:Python 的文件/面板与的输出之间是否存在关系print os.getcwd()?SublimeREPL在REPL启动时初始化其cwd。cwd将在REPL的整个生命周期内保持不变。

如您所指出的, SublimeREPL:Python 的默认cwd是:

"cwd": "$file_path"

这意味着将光标放在空白的Sublime面板中启动 SublimeREPL:Python
,结果/opt/sublime_text/为cwd。这可能被认为是不希望的并且令人困惑。

但是,如果在光标位于要运行的.py文件中时启动 SublimeREPL:Python ,则REPL将使用 当前.py文件的文件夹 作为其cwd。

我个人认为这是理想的行为,但是您必须先了解它,然后才能变得方便。

如果将cwd的设置更改为:

"cwd": "$folder",

对于不使用sublime-projects的情况,上述行为保持不变。当您确实使用sublime-project时,python REPL
cwd将成为主项目文件夹,而与REPL启动时的光标位置无关。如果您有python驱动的项目,则这可能是所需的行为。但是,如果您只是在较大的项目中使用某些python脚本,则可能不希望主项目文件夹成为python
REPL中的cwd。

2021-01-20