我在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”更改回“Process”,(不进行其他更改),则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__

当命名为“Process”时:

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一词下面显示了红色波浪线,并显示“未解析的引用'SomeProcessClass'......”的错误 . 此外,代码完成不适用于Process模块中的类,Process也不会在“MyPkg”之后显示为代码完成可能性 .

我想知道PyCharm是否可能将我从一些我不知道的东西中拯救出来 . 任何人都可以开导我吗?

谢谢你的帮助 .