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_module
和cur_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