os.chdir() 后无法导入模块

Omi*_*mid 2 python importerror python-3.x

我有一个 python 文件,其中A定义的类与我正在工作的目录不同。我想在我的脚本中从该类导入一个模块。我在 jupyter 中写了这样的东西:

import os
parent_dir = 'path/to/class'
os.chdir(parent_dir) 
from A import a
Run Code Online (Sandbox Code Playgroud)

它工作得很好,我可以执行程序。但是,当我从终端在同一目录中运行脚本时,出现此错误:

ModuleNotFoundError: No module named 'a'
Run Code Online (Sandbox Code Playgroud)

os.getcwd()在错误之前放了一个以确保它在同一目录中,当我从终端转到该目录并直接导入模块时,没有错误。我想知道为什么在运行脚本时会出现此错误。

Dan*_*iel 10

不要使用 os.chdir,因为它会改变全局状态,这可能会导致其他地方出现意外行为。

展开sys.path

import sys
sys.path.append('/absolute/path/to/module')
Run Code Online (Sandbox Code Playgroud)

  • 最好做 `sys.path.append(os.path.join(os.path.dirname(__file__),'path/to/module')` (2认同)