我是靠谱客的博主 高贵蜻蜓,最近开发中收集的这篇文章主要介绍shell运行python工程模块脚本时需要注意的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这两天忙于产品上线,原先在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工程模块脚本时需要注意的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部