使用Pycharm "Run in python console"时如何进行相对导入?

How to do a relative import when using Pycharm "Run in python console"?

我正在使用 Pycharm 及其 Run in python console 功能。它运行良好,除非源文件打算 运行 作为一个模块(-m 选项)。

例如,如果 python 源文件包括:

from . import utils

然后在选择片段时 - 通过 Run in python console - includes/requires 导入我们得到:

importError: attempted relative import with no known parent package

有什么方法可以 运行 Pycharm console 中的这段代码吗?

我会尝试 运行从 CLI 中调用代码,看看您是否遇到类似的错误。如果它可以从 CLI 运行,那么它可能是您的控制台配置。如果它在那里也不起作用,那么它可能是以下两种情况之一:

  1. 路径问题
  2. 模块编码不正确

如果模块制作正确,并且在您当前的路径中,您应该可以直接导入它:

import utils

如果这不起作用,则可能是您没有正确设置模块。有关详细信息,请参阅模块上的 python 文档:https://docs.python.org/3/tutorial/modules.html

如果您的自定义模块不在您当前的路径中,您可能需要更新系统路径以便它可以找到您的模块。

import sys
sys.path.append('C:\Users\myUserName\myDir') ## Add specific directory (windows 10)
sys.path.appen('/home/myUserName/myDir') ## Add specific directory (Unix/Linux example)
sys.path.append('..') ## Add parent directory

## Now that the system path has been updated, you can load your module
import myModuleName
from myModuleName import myClassName

最后一个尝试是更改到代码所在的目录,然后从那里 运行 python 命令。有时这是一个路径问题。如果此方法有效,则编写一个 bash/sh 包装器脚本,该脚本首先更改为目录,然后是 运行s 代码。

为了更好地了解您的 python 代码来自哪个路径,请尝试 运行ning 代码:

import os
print('cwd: %s' % os.getcwd())

输出:

cwd: C:\Users\rbala\code\test

您可以根据需要编辑和调整启动脚本。


转到设置 > 构建、执行、部署 > 控制台 > Python 控制台。您应该找到以下起始脚本:

import sys; print('Python %s on %s' % (sys.version, sys.platform))
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])

现在,您可以根据需要调整脚本,这样它就不会引发与相对导入相关的错误。