PyCharm error: 'No Module' when trying to import own module (python script)
我编写了一个模块(文件
目前,我正在文件
在ProjectView(CMD-7)中,我可以看到我的项目
1 | from my_module import my_mod as mm |
而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时,为什么会出现错误? - 我错过了什么?
笔记:
- 我没有在cool_script.py的顶部声明一个不同的/特殊的python版本
-
我确保
my_module 的路径是正确的 -
我将
__init__.py 文件(空文件)放在my_module 和cur_proj 中 -
我没有使用
virtualenv
附录2015年2月25日
当我进入PyCharm运行 - 编辑配置时,对于我当前的项目,有两个选项带有复选标记:"将内容根添加到PYTHONPATH"和"将源根添加到PYTHONPATH"。当我同时取消选中时,我可以加载我的模块。
所以它现在有效 - 但为什么呢?
出现了更多问题:
- 什么是"内容根源"和什么是"源根"?为什么在PYTHONPATH中添加一些东西会让它以某种方式破坏?
- 我是否应该一直取消选中这两个选项(默认情况下,不仅是项目特定的配置(运行/调试配置对话框的左侧面板)?
如果您自己的模块位于同一路径中,则需要将路径标记为
我希望这有帮助。
PyCharm社区/专业2018.2.1
我刚刚遇到这个问题,我能够以类似@Beatriz Fonseca和@Julie所指出的方式解决它。
如果你转到
您还需要确保将
我希望这个答案对某人有帮助,希望JetBrains能解决这个烦人的问题。
我尝试的是获取我的文件所在的位置。
例如
我去了文件 - >设置 - >项目:My_project - >项目结构,并将内容根添加到提及地点
它对我有用。
所以,如果你去
- >设置 - >项目:My_project - >项目结构,
只是源代码可用的目录,并将其标记为"Sources"(您可以在同一窗口中看到它)。带源代码的目录应该变为蓝色。现在你可以导入驻留在同一个目录中的模块。
或者你可以在这里找一个答案,告诉你如何从其他目录导入。
至于你的其他问题,我不知道因为我不使用PyCharm。
必须完成的关键混乱步骤是重新创建您尝试执行的源文件的运行配置,以便IDE选择新路径。
对我来说实际工作的方式是转到运行/编辑配置...,选择您尝试在左侧运行的文件的配置,取消选中"将源根添加到PYTHONPATH"框,保存,然后返回并选中复选框并保存。然后它会工作。
我也收到了"将源根添加到PYTHONPATH"的错误。我的问题是我有两个同名的文件夹,比如
也许如果PyCharm自动添加选定的源根,它不会使用完整路径,因此混合了具有相同名称的文件夹。
当Python解释器找不到您的代码时,可能会导致这种情况。您必须明确提及Python才能在此位置找到您的代码。
为此:
- 转到你的python控制台
-
将
sys.path.extend(['your module location']) 添加到Python控制台。
在你的情况下:
- 转到你的python控制台,
-
在开始时,编写以下代码:
1
2import sys
sys.path.extend([my module URI location]) -
编写完该语句后,可以运行以下命令:
1from mymodule import functions
当工作目录设置不正确时,我收到此错误。这很奇怪,因为它是一个全新的安装,我想不出为什么PyCharm会使用一些随机目录作为项目的工作目录,而不是根目录
对我有用的答案确实是OP在2015年更新中提到的:在Python运行配置中取消选中这两个框:
- "将内容添加到PYTHONPATH"
- "将源根添加到PYTHONPATH"
我已经将运行配置设置为使用正确的venv,因此PyCharm不需要做额外的工作来添加东西。相反,它导致了错误。
ln -s。 someProject
如果您有someDirectory / someProjectDir和两个文件,file1.py和file2.py以及file1.py尝试使用此行导入
来自someProjectDir导入文件2
即使您已将someProjectDir指定为源目录,即使它在首选项,项目,项目结构菜单中显示为内容根目录,它也不会起作用。唯一可行的方法是链接上面显示的项目(unix命令,在mac中工作,不确定使用或Windows的语法)。
似乎有一些机制,Pycharm在从版本控制结账时自动执行此操作或添加为上下文根,因为软链接是由Pycharm在依赖项目中创建的。因此,只是复制相同,虽然目录的奇怪复制是令人讨厌的,必要性是令人困惑的。此外,在自动创建的依赖项中,它不会在版本控制下显示为新目录。也许比较.idea文件会揭示更多。
无需将目录标记为源根目录的此问题的解决方案是编辑运行配置,在执行中选择"重定向输入"选项并选择要运行的脚本。这是有效的,因为它被视为脚本在此目录中以交互方式运行。但是,Python仍将标记模块名称,并显示错误"no module called x":
当解释器执行import语句时,它会在从以下源汇编的目录列表中搜索x.py:
Pycharm 2017.1.1
按
然后运行您的代码。
这对我有用。
内容根是包含项目代码的文件夹,而源根也定义为相同。我理解的唯一区别是源根中的代码是在内容根中的代码之前构建的。
取消选中它们不会影响运行时,直到您没有在包中手动连接到Django的单独模块。这意味着如果你的任何文件没有保存'from django import ...'或者没有通过django调用任何函数,则取消选中这两个选项将导致故障。
更新 - 问题仅在使用Virtual Environmanet时出现,并且仅在通过提供的终端控制项目时出现。因为终端仍然通过默认系统pyhtonpath工作,而不是虚拟环境。而python django控制面板工作正常。