gpt4 book ai didi

python - PyCharm 如何处理模块的相对导入?

转载 作者:行者123 更新时间:2023-11-28 17:41:17 35 4
gpt4 key购买 nike

我在继承的项目上有以下目录结构:

work_dir/
FlaskControlPanel/
static/
templates/
app.py
models/
__init__.py
model1.py
model2.py
script1.py
script2.py

script1.pyscript2.py 我可以运行这个 from models.model1 import Class1, Class2 并且它有效。使用 PyCharm 时,我可以在 app.py 中使用相同的导入行。

但是,当我在我的开发服务器上部署它时,这在 app.py 中不起作用。我收到错误 ImportError: No module named models.model1

PyCharm 如何解决这个问题?

当我在开发服务器上运行我的 Flask 应用程序时,如何修复 app.py 中的导入以在 PyCharm 中工作?我通常使用 FlaskControlPanel 目录中的 python app.py 在服务器上运行它。

最佳答案

您必须确保将 work_dir 添加到 sys.path 或 PYTHONPATH。

Python 会自动将脚本文件的父文件夹添加到 sys.path 中。因此,如果您在 shell 中运行 app.py,则只有 FlaskControlPanel 会被插入到 sys.path 中,而 python 无法找到 models 所在的位置(work_dir不在 sys.path 中)。

但是在pycharm中,它总是会在sys.path中添加work_dir。这就是为什么您可以毫无问题地运行 app.py 的原因。

对于您的问题,您可以将目录更改为 work_dir 并运行 PYTHONPATH=。 python FlaskControlPanel/app.py

https://docs.python.org/2/using/cmdline.html#interface-options

Execute the Python code contained in script, which must be a filesystem path (absolute or relative) referring to either a Python file, a directory containing a __main__.py file, or a zipfile containing a __main__.py file.

If this option is given, the first element of sys.argv will be the script name as given on the command line.

If the script name refers directly to a Python file, the directory containing that file is added to the start of sys.path, and the file is executed as the __main__ module.

If the script name refers to a directory or zipfile, the script name is added to the start of sys.path and the __main__.py file in that location is executed as the __main__ module.

关于python - PyCharm 如何处理模块的相对导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23830917/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com