【问题标题】:How to import own module in PyCharm console如何在 PyCharm 控制台中导入自己的模块
【发布时间】:2016-08-03 17:59:08
【问题描述】:

我的项目目录中有一个自己的模块,我将它导入到我的代码中。

main.py:

from my_module import Test

print(Test.test())

my_module.py:

class Test:
@staticmethod
def test():
    return '123'

在 PyCharm 中运行代码没有问题。但是当我尝试“在控制台中执行选择”时,我得到了

Traceback (most recent call last): File "<input>", line 1, in <module> File "C:\Program Files (x86)\JetBrains\PyCharm 5.0.4\helpers\pydev\pydev_import_hook.py", line 21, in do_import module = self._system_import(name, *args, **kwargs) ImportError: No module named 'my_module'

如何在 PyCharm 控制台中导入自己的模块?

【问题讨论】:

  • 检查this。执行 import sysprint(sys.path) 以查看在查找导入时将搜索的当前路径。
  • ['C:\\Program Files (x86)\\JetBrains\\PyCharm 5.0.4\\helpers\\pydev', 'C:\\Program Files (x86)\\JetBrains\\PyCharm 5.0.4\\helpers\\pydev', 'C:\\WINDOWS\\SYSTEM32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages']
  • 你也可以import sys, sys.path.append("/full/path/to/folder/containing/my_module.py")
  • 我只试过import syssys.path.append("/full/path/to/folder/containing/my_module.py"),它成功了。

标签: python pycharm


【解决方案1】:

您还可以指示 PyCharm 在 Python 控制台中将源根添加到 PYTHONPATH

  • 转到文件->设置(或默认设置)->构建、执行、部署->控制台-> Python控制台
  • 选中“将源根目录添加到 PYTHONPATH”。

由于某种原因,默认情况下未激活此选项。

【讨论】:

  • 这对我来说是默认激活的,但没有解决问题。
【解决方案2】:

我不使用 PyCharm,但问题是由诸如 PATH 之类的环境变量引起的,这些变量在程序/IDE 中不一定可用。

如何正确/永久地修复它已经被讨论过无数次了;例如herehere。通常,从终端运行程序可以解决问题,因为程序因此“继承”了环境变量。另一种方法是使用这个快速修复:

import sys
sys.path.append("/full/path/to/folder/containing/your_module.py")
# Now, this should work:
import your_module

【讨论】:

    【解决方案3】:

    对我有用的是:

    1. 转到文件 -> 设置(或默认设置) -> 构建、执行、 部署 -> 控制台 -> Python 控制台
    2. 注释掉“sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])”
    3. 现在我可以在控制台的源根目录中导入模块了!

    【讨论】:

      【解决方案4】:
      import sys; print('Python %s on %s' % (sys.version, sys.platform))
      sys.path.extend(['C:\\Users\\ahmet\\source\\repos\\python-core'])
      

      PyCharm 为你添加根目录。

      要导入文件,需要在子目录名称前加上前缀,如下所示

      from subdirectory.myfile from ClassA
      

      【讨论】:

      • 按照@JohnnyQ 的建议以某种方式注释掉 sys.path 行,然后删除子目录解决了我的问题。我不知道为什么我的经历与你相反......
      猜你喜欢
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 2016-05-22
      • 2021-07-25
      相关资源
      最近更新 更多