【发布时间】:2015-04-26 14:54:16
【问题描述】:
我已经编写了一个模块(文件my_mod.py 位于文件夹my_module 中)。
目前,我正在处理位于文件夹cur_proj 中的文件cool_script.py。我已经使用 File -- open 在 PyCharm 中打开了该文件夹(因此我假设它是一个 PyCharm 项目)。
在 ProjectView (CMD-7) 中,我可以看到我的项目 cur_proj(红色),在“外部库”下,我确实看到了 my_module。在cool_script.py,我可以写
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 -- Settings -- Project cur_proj -- Project Interpreter -- CogWheel 在 python 解释器旁边 -- 更多 -- 显示所选解释器图标的路径,来自 PYTHONPATH 的路径确实出现(我认为它们应该出现)
因此,当我尝试运行cool_script.py 时,为什么会出现错误? -- 我错过了什么?
注意事项:
- 我是cool_script.py顶部的not declaring a different / special python version
- 我确定the path to
my_moduleis correct - 我在
my_module和cur_proj中都有put__init__.pyfiles (empty files) - 我没有使用
virtualenv
2015 年 2 月 25 日附录
当我进入 PyCharm 运行 -- 编辑配置时,对于我当前的项目,有两个选项被选中并带有复选标记:“将内容根添加到 PYTHONPATH”和“将源根目录添加到 PYTHONPATH"。当我都未选中时,我可以加载我的模块。
所以它现在可以工作了——但是为什么?
出现了更多问题:
- 什么是“内容根”,什么是“源根”?为什么在 PYTHONPATH 中添加一些东西会使其以某种方式中断?
- 我是否应该一直取消选中这两个选项(默认情况下也是如此,而不仅仅是项目特定的配置(运行/调试配置对话框的左侧面板)?
【问题讨论】:
-
你可能已经尝试过了,但是当从其他包导入模块时,请包含包名
from foldername.mymodule import mymethod。我必须做的另一件事是在用于访问模块的所有文件夹中添加空的 _init.py 文件夹,因此在from parentfolder.childfolder.mymodule ...的情况下,您需要两个 init文件夹。根据文件夹相对于彼此的位置,您可能需要在sys.path中有一个顶级包,如answer 中所述 -
我也遇到了你的问题。以下帖子解决了我的问题:stackoverflow.com/questions/21236824/…
-
您确定为什么取消选中这些复选框而不是选中它们实际上有效吗?
-
对我有用的是在 PyCharm 专业版的设置
Languages & Frameworks -> Django中取消选中Enable Django Support。它正在打开一个导致导入问题的 django 控制台。