phe*_*ez1 93 python python-3.x
我有以下目录:
myProgram
??? app
??? __init__.py
??? main.py
??? mymodule.py
Run Code Online (Sandbox Code Playgroud)
mymodule.py:
class myclass(object):
def __init__(self):
pass
def myfunc(self):
print("Hello!")
Run Code Online (Sandbox Code Playgroud)
main.py:
from .mymodule import myclass
print("Test")
testclass = myclass()
testclass.myfunc()
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我得到了这个错误:
Traceback (most recent call last):
File "D:/Users/Myname/Documents/PycharmProjects/myProgram/app/main.py", line 1, in <module>
from .mymodule import myclass
SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)
这有效:
from mymodule import myclass
Run Code Online (Sandbox Code Playgroud)
但是当我输入时,我没有自动完成,并且有一条消息:"未解析的引用:mymodule"和"未解析的引用:myclass".在我正在处理的其他项目中,我收到错误:"ImportError:没有名为'mymodule'的模块.
我能做什么?
Erm*_*man 51
我有同样的问题,我通过使用绝对导入而不是相对导入来解决它.
例如在你的情况下,你会写这样的东西:
from app.mymodule import myclass
Run Code Online (Sandbox Code Playgroud)
您可以在文档中看到.
请注意,相对导入基于当前模块的名称.由于主模块的名称始终为"
__main__",因此用作Python应用程序主模块的模块必须始终使用绝对导入.
小智 18
我通常使用此解决方法:
try:
from .mymodule import myclass
except Exception: #ImportError
from mymodule import myclass
Run Code Online (Sandbox Code Playgroud)
这意味着您的IDE应该选择正确的代码位置,python解释器将设法运行您的代码.
如果你只是运行main.py下app,只需导入就好
from mymodule import myclass
Run Code Online (Sandbox Code Playgroud)
如果要调用main.py其他文件夹,请使用:
from .mymodule import myclass
Run Code Online (Sandbox Code Playgroud)
例如:
??? app
? ??? __init__.py
? ??? main.py
? ??? mymodule.py
??? __init__.py
??? run.py
Run Code Online (Sandbox Code Playgroud)
main.py
from .mymodule import myclass
Run Code Online (Sandbox Code Playgroud)
run.py
from app import main
print(main.myclass)
Run Code Online (Sandbox Code Playgroud)
所以我认为你的主要问题是如何打电话app.main.
| 归档时间: |
|
| 查看次数: |
112843 次 |
| 最近记录: |