概述
这两天忙于产品上线,原先在pycharm可以直接运行的工程,部署到服务器后使用shell命令启动时出现了模块加载错误问题,查阅了很多文档,在这里给大家做个总结。
举例:这里我有一个工程,结构如下。
main程序入口代码如下:
from shellpath.pack1.model1 import A
from shellpath.pack1.model2 import B
from shellpath.pack1.model3 import C
if __name__ == "__main__":
A().test()
B().test()
C().test()
直接run,程序正常运行
接下来咋们使用shell脚本命令启动工程的方法之一:
python shellpath/main.py
注意:工作路径将添加到搜索路径中,此处工作路径会把 ../shellpath路径添加进去
问题就来了
出现了模块无法加载的情况。我们该怎么办呢???
我们这时应该分析一下解释器编译路径,看看执行的.py文件的所有搜索路径有没有我们想要加载的模块路径。
注意:一般情况下,启动程序路径会 自动加载到搜索模块的路径集
import sys
print(sys.path)
搜索路径如下:
['/Users/darkmoon/PycharmProjects/ShellPath/shellpath', ''......]
不出所料,我们可以看到路径里面没有我们要加载的模块的路径。搜索路径只有shellpath以及编译器搜索路径,理所当然from shellpath.xxx import xx肯定加载不了,看到这里,我相信大家知道怎么解决问题了吧。
在程序入口添加模块搜索路径
base_dir = os.getcwd()
sys.path[0] = base_dir
import os
import sys
base_dir = os.getcwd()
sys.path[0] = base_dir
print(sys.path)
from shellpath.pack1.model1 import A
from shellpath.pack1.model2 import B
from shellpath.pack1.model3 import C
if __name__ == "__main__":
A().test()
B().test()
C().test()
再shell启动试试,结构如下:
['/Users/darkmoon/PycharmProjects/ShellPath', ''.....]
发现搜索路径存在ShellPathl,此时from shellpath.xxx import xx就可以加载 了。
最后
以上就是高贵蜻蜓为你收集整理的shell运行python工程模块脚本时需要注意的问题的全部内容,希望文章能够帮你解决shell运行python工程模块脚本时需要注意的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复