Python项目中没法导入自建模块包的问题!

Python项目中没法导入自建模块包的问题!

相信初心们不少都会遇到这样的问题。python

自建模块放在项目中的公用模块包中,开发工具(pycharm或vscode等等)里面完美运行,上线或者在shell命令中却运行报错,找不到模块:shell

ModuleNotFoundError: No module named 'xxxx'

遇到这个错误的时候,我也曾很是苦恼 ...app

各类度娘 .....ide

多数方法基本无效...(也可能我太笨,或太背...)工具

在经历了2个半小时的挫折以后,决定本身解决...开发工具

在此分享一下我的解决方案。code



1、项目结构

个人项目结构是这样的:图片

输入图片说明

spider02:为项目根目录路径开发

spiders:为爬虫项目包,其下分N种爬虫。pycharm

_tools包:就是咱们全部爬虫公用的工具包了

2、导包方法

那么问题来了。咱们该如何倒这个自建的工具包呢?

咱们都知道,倒包经常使用方式分两种:

  • 以当前路径为准,输入目标模块 或 包的路径: from .._tools import xxx

  • 以项目根目录为准,输入目标模块 或 包的路径: from spiders._tools import xxx

我的建议使用第二种方法。因此,咱们的导包须要这样倒:

from spider._tools import *

这样的好处就是,一切都以项目根目录为开始,比较统一,不容易出错。

设置(最终)

说完了导包,咱们最后就来讲该怎么设置这个自建的模块包呢。

若是光有__init__.py文件的话,也只能说明他是一个可导的文件包。

若是你直接导入它的话,就会报错。由于,import须要搜索系统环境变量,来肯定所导包的位置。若是找不到,固然会报错 ...

直奔主题....

Mac系统的环境变量:

在下列文件中,添加你的项目绝对路径:

/etc/profile
/etc/paths

我的建议添加到第二个里面。

若是说你不想改变系统的,那么把项目绝对路径添加到私人环境变量中也ok:

/private/etc/paths

这是用户私人的全局,只要打开电脑,登录后,就会加载。

有人会说,你直接append不就好了么。

为想说的是;;;;

若是直接append的话,你就须要把
【每一个用到tools模块包,或是自建包下面的文件导其余自建包模块的时候,要在全部py文件中,都去写一遍append...】

好了,就写这么多....上班时候写的...见谅。

补充一句,任何项目中导包地方,都是以项目根目录为准的。

相关文章
相关标签/搜索