PyCharm错误:尝试导入自己的模块时没有模块(python脚本)

Cla*_*aus 127 python module pycharm

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

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

from my_module import my_mod as mm
Run Code Online (Sandbox Code Playgroud)

而PyCharm甚至为my_mod提出建议.到现在为止还挺好.

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

这对我来说很奇怪,因为

A)在终端(OS 10.10.2)中,在python中,我可以导入模块没问题 - .bashrc中的PYTHONPATH中有相应的条目

B)在PyCharm中 - 设置 - 项目cur_proj - 项目解释器 - 在python解释器旁边的CogWheel - 更多 - 显示所选解释器图标的路径,PYTHONPATH的路径确实出现(我认为应该这样)

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

笔记:

附录2015年2月25日

当我进入PyCharm运行 - 编辑配置时,对于我当前的项目,有两个选项带有复选标记:" 将内容根添加到PYTHONPATH "和" 将源根添加到PYTHONPATH ".当我同时取消选中时,我可以加载我的模块.

所以它现在有效 - 但为什么呢?

出现了更多问题:

  • 什么是"内容根源"和什么是"源根"?为什么在PYTHONPATH中添加一些东西会让它以某种方式破坏?
  • 我是否应该一直取消选中这两个选项(默认情况下,不仅是项目特定的配置(运行/调试配置对话框的左侧面板)?

Bea*_*eca 268

如果您自己的模块位于同一路径中,则需要将路径标记为Sources Root.在项目资源管理器中,右键单击要导入的目录.然后选择Mark Directory As并选择Sources Root.

我希望这有帮助.

  • 这对我有用,但我还必须删除并重新创建我之前创建的运行配置,然后将该文件夹标记为源根目录. (8认同)
  • 并且需要添加__init__.py以使Python将目录视为包含软件包:http://stackoverflow.com/questions/448271/what-is-init-py-for#answer-448279 (2认同)

Ole*_*kin 22

PyCharm社区/专业2018.2.1

我刚刚遇到这个问题,我能够以类似@Beatriz Fonseca和@Julie所指出的方式解决它.

如果你去File- > Settings- > Project: YourProjectName- > Project Structure,你将拥有你当前正在使用的项目的目录布局.你必须浏览你的目录并将它们标记Source为所有源文件的目录,或作为Resource严格用于导入的文件的文件夹.

您还需要确保将__init__.py文件放在资源目录中,或者确实放在要导入的任何位置,并且它将完美地运行.

我希望这个答案对某人有所帮助,希望JetBrains能解决这个烦人的问题.

  • 这并非特定于* PyCharm Professional *,而是在* PyCharm Community *版本中也可用。在项目结构中,右键单击包含模块的目录,然后从上下文菜单中选择“将目录标记为”,然后选择“源根目录”。 (2认同)
  • 您能告诉我这个 Sources Root 的含义是什么吗?虽然它解决了我的问题,但不太明白我为什么这样做。 (2认同)

小智 12

所以,如果你去

->设置->项目:My_project->项目结构,

仅提供源代码所在的目录,并将其标记为“源”(您可以在同一窗口中看到它)。带有源代码的目录应变为蓝色。现在,您可以导入位于相同目录中的模块了。


小智 11

始终将导入上方的目录标记为源根目录!

所以如果结构是

parent_folder/src/module.py

你必须输入类似的内容:

from src.module import function_inside_module

parent_folder在 PyCharm 中标记为“源文件夹”


Rub*_*bit 7

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

也许如果 PyCharm 自动添加选定的源根目录,它不会使用完整路径,因此会混合具有相同名称的文件夹。


小智 7

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

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

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

它对我有用.

  • 在项目结构中找到对我有用的文件夹。谢谢。 (2认同)

小智 5

my_module是一个文件夹而不是模块,您无法导入文件夹,请尝试移动my_mod.py到与 相同的文件夹cool_script.py,然后执行import my_mod as mm. 这是因为 python 只在当前目录中查找 和sys.path,所以my_mod.py除非在同一目录中否则不会找到

或者您可以在此处查找答案,告诉您如何从其他目录导入。

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