相关疑难解决方法(0)

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

我写了一个模块(文件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中添加一些东西会让它以某种方式破坏?
  • 我是否应该一直取消选中这两个选项(默认情况下,不仅是项目特定的配置(运行/调试配置对话框的左侧面板)?

python module pycharm

127
推荐指数
7
解决办法
14万
查看次数

从其他文件导入类时,PyCharm未解析引用

这个问题让我疯狂.我试图从同一目录中的文件导入一个类.PyCharm给了我"未解决的参考"错误.MyClass定义于file.py.

未解决的参考

我发现了这些问题:

我有以下项目结构:

项目结构

我已将src标记为源根...

我设置了"将源根添加到PYTHONPATH":

添加源选项

我试过File - > Invalidate Caches/Restart ..(我甚至重新启动了计算机).

如果我尝试运行它,我在控制台中收到以下错误: ImportError: cannot import name 'MyClass'

解释器是Ubuntu x64 14.04上的Python 3.4上的virtualenv.

如果我安装并导入任何第三方软件包,它们都可以正常工作.

如果我echo $PYTHONPATH在终端尝试它什么都不返回(与...相同env | grep PYTHONPATH.当我尝试这些时,我有适当的virtualenv活动.

有线索吗?

python pycharm

12
推荐指数
2
解决办法
1万
查看次数

打开/尝试读取文件

我试图简单地将文本文件的内容读取并存储到数组中,但是:

ins = open( "file.txt", "r" )
array = []
for line in ins:
    array.append( line )
ins.close()
Run Code Online (Sandbox Code Playgroud)

它给了我一个"开放"的错误:

Unresolved reference 'open' less... (Ctrl+F1) 
Run Code Online (Sandbox Code Playgroud)

此检查检测应解决但不能解析的名称.由于动态调度和鸭子打字,这在有限但有用的情况下是可能的.顶级和类级别项比实例项更受支持.

谁能解释我做错了什么?谢谢

python file pycharm

6
推荐指数
1
解决办法
1万
查看次数

Pycharm:将文件夹标记为“源根目录”对于子文件夹不是递归的

我已经按照pycharm 文档来设置 IDE 来解析导入。但是,似乎每个包含 *.py 文件的文件夹都需要明确添加为“源根目录”,以便 IDE 解析所有引用。这可以从根文件夹递归完成吗?

这是让 IDE 解析所有代码库引用的正确方法,还是我没有正确设置我的项目结构?

我已经按照其他方法来解决 IDE 中的引用herehere,但无济于事。如果我手动将每个文件夹添加为“源根目录”,IDE 似乎只会解决它们。如果没有递归功能,大型代码库在设置 IDE 时会很费力!

python python-import pycharm python-2.7

5
推荐指数
1
解决办法
2万
查看次数

IntelliJ IDEA 对所有内容(Python、虚拟环境)都表示“未解决的引用”

如何让 IntelliJ IDEA 识别常见的 Python 模块?尽管我已将我的虚拟环境添加为“Python 解释器”并且缓存无效,但 IntelliJ IDEA 对所有内容都抱怨“未解决的引用”。这些(1) (2)相关问题无助于解决问题。

未解决的参考 解释器已设置

python intellij-idea

5
推荐指数
2
解决办法
4631
查看次数

Intellij Idea无法识别python 3中本地类的导入

我有一个python3脚本script.py,在其中我要实例化一个在clazz.py中定义的Foobar类。但是,当我尝试导入时,我得到:

$ python3 script.py
...
SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)

这是我的文件结构:

python_import/
??? __init__.py
??? clazz.py
??? script.py
Run Code Online (Sandbox Code Playgroud)

clazz.py:

class Foobar():
    def __init__(self):
        print("initialized a foobar")
Run Code Online (Sandbox Code Playgroud)

script.py:

from .clazz import Foobar
foobar = Foobar()
Run Code Online (Sandbox Code Playgroud)

它运行很好,如果我摆脱.import; 但是,如果执行此操作,则我的IDE(Intellij IDEA)会以红色下划线标记导入内容,并且不会自动完成任何操作。我相信.在python3中包含正确,并且Intellij似乎很喜欢,所以除非删除它,否则为什么我的程序无法运行?

我已阅读http://www.diveintopython3.net/porting-code-to-python-3-with-2to3.html#importhttp://python.readthedocs.org/en/latest/reference/import.html如何在同一目录或子目录中导入类?Python 3中的相对导入Python 3中的相对导入不起作用

我怀疑它可能与virtualenv有关,但是a)我不明白为什么工作目录不会成为PYTHONPATH的一部分,并且b)我不太确定如何在virtualenv中进行更改-Intellij设置了它为我。

python import intellij-idea python-3.x

4
推荐指数
1
解决办法
2961
查看次数

没有名为StringIO的模块

我有python 3.6.我想从另一个名为'run.py'的python文件中执行名为'operation.py'的python文件.

operation.py我做from cStringIO import StringIO.PyCharm向我显示警告,没有名为StringIO的模块.我知道,因为python3我必须从io导入StringIO模块.但是,当我使用此导入时,此模块的功能不再起作用.

虽然有一个警告from cStringIO import StringIO,代码仍然有效(我知道这个导入确实有效,因为我试图使它成为一个注释,它无法运行).问题是,当我尝试通过'run.py'文件运行此文件时,它无法运行并打印以下消息:ModuleNotFoundError: No module named 'cStringIO'.

我试图在PyCharm中使用这个未解决的参考问题,但它没有帮助.

为什么'operation.py'会运行警告,但'run.py'不会?我怎么解决这个问题?

operation.py:

    from cStringIO import StringIO


    str_io = StringIO()
    g = Generator(str_io, False)
    # There is a full code here...
Run Code Online (Sandbox Code Playgroud)

run.py:

    import operation


    def main():
        operation
Run Code Online (Sandbox Code Playgroud)

operation.py有一个警告,但运行良好,run.py有失败.

python stringio python-3.x cstringio

-1
推荐指数
2
解决办法
2万
查看次数