python导入同级别模块很方便:


运行环境 Runtime environment

1
2
3
操作系统: Windos10  
IDE: pycharm 2021.3.1 x64
语言: python v3.9.1

背景

公司开发的爬虫项目日益庞大,光是启动爬虫的启动文件,都有几十个了。

于是,我打算把我负责的爬虫启动程序收束到一个目录当中,做整理。

但是,路径变更了以后,导致启动程序在服务器运行时,发生了错误。

主程序与模块程序在同一目录下

目录结构

1
2
3
-- spider
|-- demo_1.py
|-- main.py

main.py 中导入 mod1.py,则:

import demo_1

from demo_1 import *

主程序所在目录是模块所在目录的父(或祖辈)目录

目录结构

1
2
3
4
5
-- spider
|-- demo_1.py
|-- demo_2
| |-- demo_2_1.py
|-- main.py

main.py 中导入 demo_2中的demo_2_1.py,则:

  • 需要在demo_2文件夹中建立空文件__init__.py文件

from demo_2.demo_2_1 import *

import demo_2.demo_2_1

主程序导入上层目录中模块或其他目录(平级)下的模块

目录结构

1
2
3
4
5
6
-- src
|-- demo_1.py
|-- demo_2
| |-- demo_2_1.py
|-- sub
| |-- main.py

main.py 中导入 demo_2中的demo_2_1.py,则:

  • 需要在demo_2文件夹中建立空文件__init__.py文件
1
2
3
4
5
6
7
8
9
10
import sys
sys.path.append("..")

import demo_1
import demo_2.demo_2_1

# or

from demo_1 import *
from demo_2.demo_2_1 import *

总结

ojbk, 完事。虽然Pycharm下面报着个小横线,看着听不自在的。不过解决的问题。

sys模块可以让python的导包路径更加灵活,但个人认为开发的时候,在项目结构上还是尽量避免需要用到这种方式的尝尽。