我创建了我的简单脚本(tg bot),但在上传到我的 Ubuntu 服务器上之后(替代模式下的 python ==3.9.13,pip freeze 并安装了要求)。有一些路径(我认为)问题:
root@tele:/# python3 /root/mybot/workDir/coreFiles/coreBot.py
Traceback (most recent call last):
File "/root/mybot/workDir/coreFiles/coreBot.py", line 6, in <module>
from workDir.sets import config
ModuleNotFoundError: No module named 'workDir'
在我的核心文件中有一些导入:
from workDir.sets import config
from workDir.methods.states.comdsHandler import getHandler
这是我的项目树:
workDir/
├─coreFiles/
│ └─coreBot.py
├─methods/
│ ├─states/
│ │ ├─actionStates.py
│ │ └─comdsHandler.py
│ └─utils/
│ ├─connectionDB.py
│ ├─loggingUtil.py
│ ├─registerUserInDB.py
│ └─strParser.py
└─sets/
├─categories.py
└─config.py
请帮助找到比在一个 py 文件中制作更好的解决方案:)
有几个问题。您正在像处理 python 文件一样处理文件夹,并且您可能会对文件夹结构感到困惑。澄清一下:
import X from Y
--> 将在文件中返回 X(可以是类或函数或其他) Y.py
因此,就您而言,您只想:
import workDir.sets.config
由于您没有加载
config.py
中的任何特定内容,因此您只需要整个文件。
此外,导入结构在很大程度上取决于您正在运行的脚本的工作目录所在的位置。您正在工作目录中运行的脚本吗?如果是这样,你不需要放
import workDir.sets.config
import .sets.config
就足够了。
如果您不知道目录运行
print(os.getcwd())
编辑: 我注意到您正在从
/workDir/coreFiles/coreBot.py
加载,这是正确的吗?
如果是这样,您需要从父目录加载文件:
import ..sets.config