使用pycharm配置文件时发生导入错误

问题描述 投票:0回答:2

问题

我启动了flask应用程序,当我使用“运行”或“调试”时,该应用程序运行良好。但是,使用“配置文件”时出现错误,这是日志消息

In folder C:/Users/Myname/PycharmProjects/ProjectName
"C:\Users\Myname\Anaconda3\envs\ProjectName\python.exe" "C:\Program Files\JetBrains\PyCharm 
Professional Edition with Anaconda plugin 2019.2.4\helpers\profiler\run_profiler.py" 127.0.0.1 12055 -m flask run
Starting cProfile profiler
Traceback (most recent call last):
Snapshot saved to C:\Users\Myname/.PyCharm2019.2/system\snapshots\ProjectName1.pstat
File "C:\Program Files\JetBrains\PyCharm Professional Edition with Anaconda plugin 2019.2.4\helpers\profiler\run_profiler.py", line 173, in <module>
profiler.run(file)
File "C:\Program Files\JetBrains\PyCharm Professional Edition with Anaconda plugin 2019.2.4\helpers\profiler\run_profiler.py", line 89, in run
execfile(file, globals, globals)  # execute the script
File "C:\Program Files\JetBrains\PyCharm Professional Edition with Anaconda plugin 2019.2.4\helpers\profiler\prof_util.py", line 30, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:\Users\Myname\Anaconda3\envs\ProjectName\lib\site-packages\flask\__init__.py", line 19, in <module>
from . import json
ImportError: attempted relative import with no known parent package

我尝试过的

我用Google搜索它,发现它是一个老问题。

Can't profile module using relative imports

Pycharm profile is not working

如何复制

如果您想复制它,可以使用pycharm创建一个flask应用程序,然后单击“配置文件”。

flask应用程序的默认代码如下。但我认为这并不重要。

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

由于烧瓶版本或Pycharm版本的更改,错误消息可能有所不同,但是原因相同:File "xxx\lib\site-packages\flask\__init__.py", line 19, in <module>使用相对导入并导致ImportError

我的问题

我的问题是,有没有办法使它起作用?任何黑客或技巧也将不胜感激。我只想立即使用个人资料。谢谢

python flask pycharm
2个回答
0
投票

显然,这是PyCharm的探查器的长期存在的问题,它无法正确运行packages,导致sys.path不稳定并且相对导入失败:https://youtrack.jetbrains.com/issue/PY-28509

[我猜一个选择是仅复制what flask.__main__ does,即可制作自己的“启动脚本”。

尽管<也可以通过运行flask.__main__而不只是-m flask.cli来解决(我不知道,我没有对其进行测试):它执行相同的操作,但是不调用[ C0]文件,使其性能更好。


-1
投票
[[新解决方案]
© www.soinside.com 2019 - 2024. All rights reserved.