在Ubuntu 18服务器上部署Python项目
我写了一个简单的脚本(tg 机器人),但是在把它上传到我的 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 文件里更好的解决方案 :)
1 个回答
1
这里有几个问题。你把文件夹当成Python文件来处理,可能会对文件夹的结构感到困惑。为了更清楚:
import X from Y
--> 这条命令会从文件Y.py
中返回X(X可以是一个类、一个函数或者其他东西)。
所以,在你的情况下,你只需要:
import workDir.sets.config
因为你并没有从config.py
中加载任何特定的内容,所以你只需要整个文件。
另外,导入的结构很大程度上取决于你运行脚本的工作目录。你运行的脚本是在workDir里面吗?如果是的话,你就不需要写import workDir.sets.config
,直接写import .sets.config
就可以了。
如果你不知道当前的目录,可以运行print(os.getcwd())
来查看。
编辑:我注意到你是从/workDir/coreFiles/coreBot.py
加载的,这样对吗?如果是的话,你需要从上级目录加载文件:
import ..sets.config