python-112-操作的技巧和注意事项(四).so和.py文件加载优先级和容器化部署和Nginx配置
2026/6/10 9:37:01 网站建设 项目流程

文章目录

  • 1 代码加载顺序
    • 1.1 问题场景
    • 1.2 核心原理
  • 2 容器化部署
    • 2.1 公共部分
      • 2.1.1 requirements.txt
      • 2.1.2 运行相关命令
      • 2.1.3 Dockerfile
    • 2.2 查看进程
  • 3 Nginx配置
    • 3.1 WSL中安装nginx
    • 3.2 修改默认配置
      • 3.2.1 前端资源代理配置 (/frontend/)
      • 3.2.2 API接口代理配置 (/api/)

1 代码加载顺序

1.1 问题场景

在python中如果有两个文件xxx.cpython-38-x86_64-linux-gnu.so和xxx.py在运行时会加载哪一个?

在Python中,如果存在同名的.so编译模块文件和.py源码文件,Python在运行时会优先加载.so文件(即xxx.cpython-38-x86_64-linux-gnu.so)。

1.2 核心原理

这由Python的导入机制决定。当执行代码文件xxx时,Python内置的PathFinder会遍历sys.path列表来查找模块。

在同一个目录下,Python的默认导入优先级是:
C扩展模块(.so/.pyd) > 字节码文件(.pyc) > 源码文件(.py)

1、具体加载过程
(1)定位模块:PathFinder在目标路径下发现了 xxx.cpython-38-x86_64-linux-gnu.so和xxx.py。
(2)生成加载蓝图:由于.so文件的优先级更高,PathFinder会返回一个包含 ExtensionFileLoader的ModuleSpec对象。
(3)激活加载器:ExtensionFileLoader会通过操作系统的动态链接库机制,直接将编译好的二进制代码加载到内存中执行,而完全忽略旁边的.py文件。

2、补充说明
(1)命名规范:你提到的.so文件名x

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询