PyCharm错误:尝试导入自己的模块(python脚本)时出现“No Module”

我已经写了一个模块(位于文件夹my_module的文件my_mod.py文件)。 目前,我正在驻留在文件夹cur_proj中的文件cur_proj 。 我打开文件夹在PyCharm使用文件打开(我假设,因此,它是一个PyCharm项目)。

在ProjectView(CMD-7)中,我可以看到我的项目cur_proj (红色)和“外部库”下我看到my_module 。 在cool_script.py中,我可以写

 from my_module import my_mod as mm 

而PyCharm甚至会为my_mod提供build议。 到现在为止还挺好。

但是,当我尝试运行cool_script.py时,PyCharm告诉我“没有名为my_module的模块”

这对我来说似乎很奇怪,因为

一)在terminal(操作系统10.10.2),在Python中,我可以导入模块没有问题 – 有一个相应的入口在PYTHONPATH在.bashrc

B)在PyCharm – 设置 – 项目cur_proj – 项目解释器 – CogWheel旁边的Python解释器 – 更多 – 显示选定的解释器图标的path,从PYTHONPATH的path确实出现(我认为他们应该)

因此,当我尝试运行cool_script.py时,为什么会出现错误? – 我错过了什么?

笔记:

  • 我没有在cool_script.py的顶部声明一个不同的/特殊的Python版本
  • 我确信my_module的path是正确的
  • 我把__init__.py文件(空文件)放在my_modulecur_proj
  • 我没有使用virtualenv

附录2015年2月25日

当我进入PyCharm运行 – 编辑configuration时,对于我当前的项目,有两个选项用选中标记“ 添加内容根到PYTHONPATH ”和“ 添加源根到PYTHONPATH ”select。 当我没有选中,我可以加载我的模块。

所以现在起作用 – 但是为什么呢?

更多的问题出现了

  • 什么是“内容根源”,什么是“源头根源”? 那么为什么要在PYTHONPATH中添加一些东西让它不知何故地崩溃呢?
  • 我是否应该始终取消选中这两个选项(所以在默认情况下,不仅是项目特定的configuration(运行/debuggingconfiguration对话框的左侧面板)?

如果您自己的模块位于相同path中,则需要将path标记为Sources Root 。 在项目浏览器中,右键单击要导入的目录。 然后select将Mark Directory As然后selectSources Root

我希望这有帮助。

my_module是一个不是模块的文件夹,您不能导入文件夹,请尝试将my_mod.py移动到与my_mod.py相同的文件夹中,然后import my_mod as mm 。 这是因为python只在当前目录和sys.path ,所以不会findmy_mod.py除非它在同一目录中

或者你可以在这里find一个答案,告诉你如何从其他目录导入。

至于你的其他问题,我不知道,因为我不使用PyCharm。

我得到了“添加源根到PYTHONPATH”的错误。 我的问题是我有两个相同名称的文件夹,如project / subproject1 / thing / src和project / subproject2 / thing / src,我把它们都标记为源根目录。 当我将其中一个“东西”文件夹重命名为“thing1”(任何唯一的名称)时,它就起作用了。

也许如果PyCharm自动添加选定的源代码,它不使用完整的path,因此混合使用相同名称的文件夹。

必须完成的关键混淆步骤是重新创build要执行的源文件的运行configuration,以便IDE获取新path。

实际上我的工作方式是去运行/编辑configuration…,select你想要在左侧运行的文件的configuration,取消选中“添加源根到PYTHONPATH”框,保存,然后返回并选中该框并保存。 那么它会工作。

我所尝试的是获取我的文件所在的位置。

例如E:\git_projects\My_project\__init__.py is my location.

我去了文件 – >设置 – >项目:我的项目 – >项目结构,并添加内容的根提到地方E:\git_projects\My_project

它为我工作。

内容根目录是保存项目代码的文件夹,而源根目录也是一样的。 唯一的区别是我明白了源代码中的代码是在内容根目录的代码之前build立的。

取消选中它们不会影响运行时,直到你没有在你的包中手动连接到Django的独立模块。 这意味着如果你的任何文件没有保存“from django import …”或者没有通过django调用任何函数,那么取消选中这两个选项将会导致故障。

更新 – 仅在使用虚拟环境时才出现问题,并且仅在通过提供的terminal控制项目时出现。 导致terminal仍然通过默认的系统pyhtonpath而不是虚拟env工作。 而python django控制面板工作正常。

这可能是Python解释器无法find您的代码时造成的。 你必须明确提到Python在这个位置find你的代码。

要做到这一点:

  • 转到您的Python控制台
  • sys.path.extend(['your module location'])到Python控制台。

在你的情况下:

  • 去你的python控制台,
  • 在开始时,写下面的代码:

     import sys sys.path.extend([my module URI location]) 
  • 一旦你写了这个声明,你可以运行下面的命令:

     from mymodule import functions