美文网首页PythonLinux
python 在Linux系统下模块导入问题

python 在Linux系统下模块导入问题

作者: Sdoopy | 来源:发表于2020-08-06 13:51 被阅读0次

可能有很多人跟我一样在windows开发,在linux 部署程序。
这里记录一个我问到过的python 模块导入问题,供大家绕道而行。

比如模块文件夹结构是这样

-data
--- init.py
---a.py
---b.py
---c.py

c.py 里面调用了a和b里面的函数。
在shell 里面运行
[root@localhost data]# python3 c.py
报找不到a和b里面的函数。
这是为什么呢?
本质的原因是你的系统环境里面没有加入自己这个文件夹的路径,程序找不到这个模块。
所以,加入下面这几行代码。

import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)

这是一般的常规操作。一般你这么做也就能解决了。但是当你这么做了之后,还是没法解决,你就傻眼了,网上所有的解答都是教你这么做就好,没人告诉你这样也不行怎么办。

重点来了!其实问题出在你的文件夹命名上。上面的代码块是把你的文件夹路径加入系统环境,但是这个路径大家看代码也看的出来,是加在了系统环境List的尾部。而程序从系统环境里面找依赖,是根据这个List 从头到尾找的,而你好死不死取了个 data 如此大众化的名称,如果在前面的其他路径里也找到了有data这个子路径的路径,那就根本不会去找你加在队尾的真正的文件夹路径了。所以,我们该怎么做?要么给你的模块名称取个酷炫的名字,导致不会跟其他的系统环境里面的路径撞车,要么,把这个路径塞在队头sys.path.insert(0, rootPath)。这样问题就完全解决啦。

相关文章

  • python 在Linux系统下模块导入问题

    可能有很多人跟我一样在windows开发,在linux 部署程序。这里记录一个我问到过的python 模块导入问题...

  • django分页功能详解

    python shell模式下导入django下的Paginator模块 python shell模式下导入需要展...

  • 17-python之导入模块

    要使用一个模块,我们必须首先导入该模块。Python使用import语句导入一个模块。例如,导入系统自带的模块ma...

  • Python之导入模块

    要使用一个模块,我们必须首先导入该模块。Python使用import语句导入一个模块。例如,导入系统自带的模块ma...

  • 简书历史文章列表(不定时更新)

    Linux命令 Linux命令-文件管理Linux命令-系统管理 Python基础、相关模块及进阶 Python开...

  • 2020-02-18python高手之路学习随笔(2)

    第二章模块与库 2.1 导入系统 Python之禅 sys版本包含很多Python导入系统的信息,可以通过sys....

  • python重新导入模块

    重新加载模块 倘若,更改了已经在 Python shell 中导入的模块,然后重新导入该模块,Python 会认为...

  • 模块和包的创建与导入

    一、模块 在python中,模块就是python文件,其后缀为.py。我们通过import语句来导入模块或者导入模...

  • cannot connect to X server

    在Linux下运行Python代码遇到了这个问题。 调查后发现,X server是Linux系统上提供图形用户界面...

  • Python——MySQLdb

    在windows上安装python mysql模块后,导入模块时报 python ImportError: DLL...

网友评论

    本文标题:python 在Linux系统下模块导入问题

    本文链接:https://www.haomeiwen.com/subject/msmzrktx.html