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
相关推荐
weixin_459753948 分钟前
SQL处理大规模分组聚合的内存限制_调整服务器配置
jvm·数据库·python
计算机安禾25 分钟前
【c++面向对象编程】第25篇:仿函数(函数对象):重载operator()
开发语言·c++·算法
Rust语言中文社区25 分钟前
【Rust日报】2026-05-14 Pyrefly v1.0 正式发布:快速的 Python 类型检查器和语言服务器
开发语言·后端·python·rust
2601_9561394232 分钟前
广州VI设计公司哪家强
linux·运维·服务器·python
kkeeper~1 小时前
0基础C语言积跬步之深入理解指针(4)
c语言·开发语言
databook1 小时前
让数学公式自动推导
python·数学·动效
m0_733565461 小时前
如何指定PHP版本运行phpMyAdmin_多版本共存配置
jvm·数据库·python
周末也要写八哥1 小时前
在C++中使用预定义宏
开发语言·c++·算法
Data_Journal1 小时前
使用Python lxml轻松进行网络爬取
开发语言·php
love530love1 小时前
ComfyUI MediaPipe 猴子补丁终极完善版:补全上下文管理与姿态检测兼容
人工智能·windows·python·comfyui·protobuf·mediapipe