我对Python非常陌生,对于一个项目我有以下结构:
server/
├── config/
│ ├── __init__.py
│ ├── application.py
│ ├── dev.py
│ └── qa.py
├── lib/
│ ├── __init__.py
│ ├── redisdb.py
│ ├── logger.py
│ └── geo.py
└── scripts/
├── __init__.py
├── my_first_script.py
└── my_second_script.py在my_first_script.py文件中,我有以下代码:
import pickle
from lib.redisdb import r
import re
import config.application as appconf
print( appconf.DOCUMENT_ENDPOINT )
partnerData = pickle.loads(r.get("partner_date_all"))
print( len(partnerData) )当我使用以下命令在终端中运行此代码时
python server/scripts/my_first_script.py我得到了以下错误:
Traceback (most recent call last):
File "my_first_script.py", line 3, in <module>
from lib.redisdb import r
ImportError: No module named lib.redisdb我这里使用的是Python 2.7版本。当我也检查Python 3时,我也有相同的错误。现在我如何执行这个文件?如果我的代码没有从其他本地模块导入,那么一切都能正常工作。
发布于 2022-03-30 16:00:54
您的模块都是兄弟级的,并且没有声明父包。
您可以这样修改您的结构,这样您的模块就可以相互了解。
server/ (assuming this is your project root)
server/ (assuming you want to call your package "server")
├── __init__.py
├── server.py (your package entry point)
├── config/
│ ├── __init__.py
│ ├── application.py
│ ├── dev.py
│ └── qa.py
├── lib/
│ ├── __init__.py
│ ├── redisdb.py
│ ├── logger.py
│ └── geo.py
└── scripts/
├── __init__.py
├── my_first_script.py
└── my_second_script.py现在,您的导入可以引用父包:
例如:
# my_first_script.py
from server.config import applicationhttps://stackoverflow.com/questions/71680380
复制相似问题