Python导入私有模块(企业级方案)

背景

python 复制代码
PythonProject/
    │
    └── src/
        ├── configuration/
        │   ├── __init__.py
        │   └── config.py           
        │
        └── process/
            ├── __init__.py
            └── test.py  <-- 你运行的文件

找不到configration模块

用from src.configuration.config import *但是离开集成开发环境就失效

复制代码

pycharm运行带有导入模块的py文件

第一步

PythonProject/src/configuration/config.py

python 复制代码
setting = 'I am config'

PythonProject/src/process/test.py

python 复制代码
from configuration.config import *

def preprocess():
    print('预处理')
   

if __name__ == '__main__':
    preprocess()

第二步

在pycharm中设置指定目录为source文件目录

  1. 在左侧 Project 面板,指定目录。

  2. 右键 → Mark Directory asMark as Sources Root

  3. 图标变蓝色,完成。

第三步

在pycharm里运行test.py

windows、linux运行带有导入模块的py文件

python 复制代码
PythonProject/
    │
    └── src/
        ├── configuration/
        │   ├── __init__.py
        │   └── config.py           
        │
        └── process/
        |   ├── __init__.py
        |   └── test.py  
        |
        └── main.py         <-- 你运行的文件

第一步

PythonProject/src/configuration/config.py

python 复制代码
setting = 'I am config'

PythonProject/src/process/test.py

python 复制代码
from configuration.config import *

def preprocess():
    print('预处理')
   

if __name__ == '__main__':
    preprocess()

PythonProject/src/main.py

python 复制代码
from sys import argv


if __name__ == '__main__':
    print(argv)
    # 获取列表中第二个参数
    arg = argv[1]
    match arg:
        case 'test':
            from process.test import test
            test()

第二步

终端运行

bash 复制代码
python D:\PythonProject\src\main.py test

Linux同理

python 目录/PythonProject/src/main.py test

原理

一、问题:Python 是怎么找到模块的?

Python 找模块(包、.py 文件),全靠一个叫 sys.path 的列表,里面存着所有它会去 "搜索" 的目录。

你在终端运行命令:

复制代码
python D:\PythonProject\src\main.py test

Python 会自动把 被运行的脚本所在的目录 ,也就是 D:\PythonProject\src,加到 sys.path 的第一个位置。这就是为什么你在 test.py 里打印 sys.path,能看到 D:\PythonProject\src 在列表最前面。


二、sys.path 决定了 Python 去哪里找包

sys.path 的构成:

  1. 被运行脚本的目录D:\PythonProject\src(你运行 main.py 时自动加上的)
  2. Python 的标准库目录
  3. site-packages 目录(装第三方库的地方)

当你写 from process.test import test 时,Python 会做这几步:

  1. 遍历 sys.path 里的每一个目录
  2. 去目录里找叫 process 的东西
    • 它在 D:\PythonProject\src 里找到了 process/ 文件夹
    • 这个文件夹里有 __init__.py,Python 就把它识别成一个
  3. 再在 process 包里找 test.py 文件,成功找到并导入
  4. 同理,from configuration.config import * 也是这样:src/configuration/ 被识别为包,然后找到里面的 config.py
相关推荐
傻啦嘿哟7 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
2501_933670797 小时前
2026秋招量化分析岗技能栈:Python、SQL、统计建模、回测项目怎么准备
开发语言·python·sql
2601_962077607 小时前
python Dejavu库快速识别音频指纹实例探究
python·音乐识别·dejavu库·音频指纹识别·实例探究
科技苑8 小时前
如何用Python编程实现一个简单的Web爬虫?
人工智能·python
李少兄8 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
dayDayupbetter8 小时前
Visual C++ 2010安装与使用高手秘籍
python
隐擎fox8 小时前
深入理解网络传输层安全:TLS 指纹识别(JA3/JA4)原理与 Python 协议层检测实战
爬虫·python·网络协议·安全·网络安全·https
医疗信息化王工8 小时前
DataForge:基于 Python 的数据库批量导出 Excel 工具——从架构到部署的全流程实战
数据库·python·excel
Seoyoneh9 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构
Tangyuewei9 小时前
Java 写 Agent:模型只是组件
java·开发语言