Pycharm:无法导入名为" Process"

时间:2016-01-22 18:32:20

标签: python pycharm

我在Windows 7上使用Python 3.4.4和PyCharm(顺便说一下FANTASTIC工具)。

我在使用名为" Process.py"的模块在PyCharm中工作时遇到问题。似乎这个名字" Process"在PyCharm中表现得像保留字。所以我的问题是:我不应该使用名称" Process"一个模块? (或者那个问题的课程?)PyCharm是否将我从潜在的问题中解救出来?或者它是PyCharm中的错误?下面是该问题的详细信息,以及重现错误的简单方法。

当命名为" Process"时,PyCharm无法在import语句中找到该模块。 PyCharm还将图标显示为文件图标,而不是python文件图标,这是不正确的。无论命名是什么,执行都是成功的(因此我认为它不是Python问题,而是PyCharm问题。)唯一的问题是PyCharm无法找到它并显示使用它作为错误。

如果我将模块命名为" xyzProcess",那么PyCharm显示它与其他模块一样对待,一切都很好。如果从" xyzProcess"更改模块名称返回"处理",(不做其他更改)然后PyCharm显示如上所述的错误。我试过用PyCharm" Refactor"重新命名。功能,以及手动操作,结果是一样的。

我创建了一个包含最小测试用例的独立包来重现此行为。目录结构是:

src
src\MyPkg
src\MyPkg\__init__.py
src\MyPkg\ImportTester.py
src\MyPkg\RunTest.py
src\MyPkg\xyzProcess.py

文件内容为:

__ init__.py:

#

ImportTester.py:

from MyPkg.Process import SomeProcessClass

class MyTestClass(SomeProcessClass):
    def __init__(self):
        super().__init__()
        print("Hello from MyTestClass in module: " + __name__)

xyzProcess.py:

class SomeProcessClass(object):
    def __init__(self):
        print("Hello from SomeProcessClass in module: " + __name__)
    pass

RunTest.py:

from MyPkg.ImportTester import MyTestClass

print("test starting in module: " + __name__)
x = MyTestClass()
print("test completed in module: " + __name__)

您可以运行RunTest.py模块来验证整个结构是否正常工作。我得到以下两个输出,这是我所期望的:

命名" xyzProcess":

test starting in module: __main__
Hello from SomeProcessClass in module: MyPkg.xyzProcess
Hello from MyTestClass in module: MyPkg.ImportTester
test completed in module: __main__

命名"处理":

test starting in module: __main__
Hello from SomeProcessClass in module: MyPkg.Process
Hello from MyTestClass in module: MyPkg.ImportTester
test completed in module: __main__

要尝试测试,只需更改" xyzProcess.py"的名称。到" Process.py"。您会注意到图标会发生变化。另外,查看ImportTester.py文件的PyCharm显示。您会注意到PyCharm在编辑器中的SomeProcessClass一词下方显示了红色波浪线,并显示错误,其中包含" Unresolved reference' SomeProcessClass' ..."。此外,代码完成不适用于Process模块​​中的类,也不会在" MyPkg之后显示为代码完成可能性。"

我想知道PyCharm是否可能将我从一些我不了解的事情中拯救出来。谁能开导我?

感谢您的帮助。

0 个答案:

没有答案