这是我的包层次结构
app
|--__init__.py //Empty file
|--server.py
|--global_vars.py
|
|--handlers
|--__init__.py //Empty file
|
|--url1
| |--__init__.py //Empty file
| |--app1.py
| |--app2.py
|
|--url2
|--__init__.py //Empty file
|--app3.py
现在我想导入global_vars.py
inside app1.py
。
所以我给了import app.global_vars.py
在 app1.py 内。
但我收到以下错误:
import app.global_vars
ImportError: No module named app.global_vars
我还应该提到我正在从 server.py 导入 app1.py。server.py
是我实际运行的文件。当server.py导入app1.py时,app1.py
尝试导入global_vars.py
我收到上述错误
我在这里做错了什么?
如果你正在跑步app/server.py
作为脚本,父目录app
没有添加到sys.path()
. The app
目录本身被添加(不是作为包,而是作为导入搜索路径)。
您有 4 个选择:
- Move
server.py
out of the app
包(旁边)
-
旁边添加一个新的脚本文件app
只运行:
from app import server
server.main()
-
Use the -m开关选项 https://docs.python.org/3/using/cmdline.html#cmdoption-m运行一个module作为主要入口点:
python -m app.server
-
添加父目录server.py
to sys.path
:
import os.path
import sys
parent = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, parent)
然而,最后一个选项可能会带来更多问题;现在两个app
包和包含的模块in the app
套餐已开启sys.path
。您可以同时导入app.server
and server
Python 会将它们视为两个独立的模块,每个模块都有自己的条目sys.modules
,具有其全局变量的单独副本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)