当前位置:首页>python>内网装 Python 依赖太痛苦?信息科这套方案终于打通了

内网装 Python 依赖太痛苦?信息科这套方案终于打通了

  • 2026-10-11 00:20:00
内网装 Python 依赖太痛苦?信息科这套方案终于打通了
       搭建内网 Python 开发环境     
       从离线安装到代理访问,信息科内网开发环境实践     
       写在前面     
       在医院信息科日常工作中,Python 经常用于接口测试、数据处理、自动化脚本、报表生成、日志分析等场景。       

       但是医院内网环境通常不能直接访问互联网,最常见的问题就是:       
pip install 装不了包。

       外网一条命令就能解决的问题,到了内网环境,往往就变成了环境搭建、依赖下载、代理配置、内网分发等一系列工作。     
 一、内网搭建 Python 环境的三种方式     
       内网安装 Python 依赖,常见有三种思路:     
方式一:外网下载,内网离线安装
         在外网机器上提前下载好 Python 依赖包,然后拷贝到内网服务器或开发机上进行离线安装。       
方式二:内网通过外网代理访问
         在一台可以访问外网的服务器上配置 Nginx 代理,内网机器访问该代理地址,再由代理转发到外部镜像源。         
         笔者实际采用的就是这种方式。       
方式三:搭建内网私有源
         在内网搭建 PyPI 私有源或缓存源,统一管理常用 Python 包,适合长期、多人、生产环境使用。       
       二、方式一:外网下载,内网离线安装     
       这是最直接、最容易理解的一种方式。       

       先在一台可以访问互联网的电脑上下载依赖包,例如下载 requests:     
pip download requests     
       执行后,会在当前目录下载 requests 以及它依赖的相关 whl 文件。       

       如果想指定下载目录,可以这样写:     
pip download requests -d C:\Users\N3verL4nd\Desktop\123     
       然后将这个目录整体拷贝到内网机器。       

       在内网机器上执行离线安装:     
pip install --no-index --find-links=C:\Users\N3verL4nd\Desktop\123 requests     
       这里几个参数需要注意:     
--no-index:不访问外部 PyPI 源。
--find-links:指定本地依赖包所在目录。
requests:需要安装的 Python 包名称。
       这种方式适合依赖较少、临时安装、环境相对固定的场景。       

       但是如果项目依赖很多,比如 pandas、numpy、opencv、oracle 驱动等,手工下载和维护就会比较麻烦。     
小提示
         离线安装时,建议在外网机器和内网机器上使用相同的 Python 版本、系统架构和操作系统环境。         
         例如都是 Windows 64 位、Python 3.10。         

         否则可能会出现 whl 包不兼容的问题。       
       三、方式二:外网 Nginx 代理访问     
       笔者实际采用的是第二种方式:       
在外网服务器上配置 Nginx,将内网请求代理到外部镜像源。

       这样内网机器不需要直接访问互联网,只需要访问这台代理服务器即可。     
内网机器 → 访问代理服务器
代理服务器 → 访问外部镜像源
外部镜像源 → 返回依赖包
代理服务器 → 返回给内网机器
       对 Python 来说,重点代理两个路径:     
/pypi/simple:Python 包索引地址
/pypi/packages:Python 包文件下载地址
       四、Nginx 核心配置     
       下面只保留核心配置,便于理解。       
       Nginx 监听 8888 端口,对外提供代理服务。     
       server {
           listen 8888;
           server_name localhost;

            location /pypi/simple {
               proxy_pass https://mirrors.aliyun.com/pypi/simple/;
               proxy_set_header Host mirrors.aliyun.com;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               proxy_set_header X-Forwarded-Proto $scheme;
               proxy_ssl_server_name on;
               proxy_ssl_protocols TLSv1.2 TLSv1.3;
           }

            location /pypi/packages {
               proxy_pass https://mirrors.aliyun.com/pypi/packages/;
               proxy_set_header Host mirrors.aliyun.com;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               proxy_set_header X-Forwarded-Proto $scheme;
               proxy_ssl_server_name on;
               proxy_ssl_protocols TLSv1.2 TLSv1.3;
           }
       }     
       这段配置的作用是:     
● 内网访问 http://代理服务器:8888/pypi/simple
● Nginx 转发到 https://mirrors.aliyun.com/pypi/simple/
● pip 通过该地址获取包索引和下载地址
● 下载包时再通过 /pypi/packages 获取实际 whl 文件
       五、内网 pip 使用代理源     
       假设外网代理服务器地址为:     
http://10.10.10.10:8888     
       那么内网机器可以这样安装 Python 包:     
pip install requests -i 10.10.10.10:8888/pypi/simple --trusted-host 10.10.10.10
       也可以安装 pandas、openpyxl 等常用包:     
pip install pandas openpyxl requests -i http://10.10.10.10:8888/pypi/simple --trusted-host 10.10.10.10
       如果经常使用,可以配置为全局 pip 源:     
pip config set global.index-url http://10.10.10.10:8888/pypi/simple
pip config set global.trusted-host 10.10.10.10
       配置完成后,后续就可以直接执行:     
       pip install requests
       pip install pandas
       pip install openpyxl     
六、Maven、NPM 也可以统一代理     
       实际工作中,信息科开发环境往往不只有 Python。       

       Java 项目需要 Maven,前端项目需要 NPM。       
       所以也可以在同一个 Nginx 中统一配置多个代理路径。     
       location /maven {
           proxy_pass https://mirrors.huaweicloud.com/repository/maven/;
           proxy_set_header Host mirrors.huaweicloud.com;
           proxy_ssl_server_name on;
       }

        location /npm {
           proxy_pass https://repo.huaweicloud.com/repository/npm/;
           proxy_set_header Host repo.huaweicloud.com;
           proxy_ssl_server_name on;
       }     
       这样一台外网代理服务器,就可以同时为内网提供 Python、Java、前端等多种依赖下载能力。     
       七、为什么笔者更推荐代理方式?     
       相比离线拷贝,代理方式更适合日常开发测试。     
● 不需要每次手工下载依赖
● 新增依赖时安装更方便
● 多台内网机器可以共用一个出口
● Java、Python、NPM 等依赖可以统一代理
● 后续可以逐步演进为内网私有源
       当然,这种方式也有前提:     
● 代理服务器需要能访问外网镜像源
● 内网机器需要能访问代理服务器
● 防火墙策略需要放通对应端口
● 最好对访问范围进行控制,避免变成无约束外网出口
       写在最后     
       内网搭建 Python 开发环境,看起来只是安装几个依赖包,实际背后涉及网络访问、依赖管理、安全控制和后续维护。       

       外网下载内网安装,适合临时使用;       
       外网 Nginx 代理,适合日常开发测试;       
       内网私有源,适合长期规范化建设。       

       笔者本次采用的是第二种方式:       
通过外网 Nginx 代理,将内网 pip、maven、npm 的依赖访问链路打通。

       对信息科来说,环境建设的价值不只是“能用”,更重要的是让后续开发、测试、排查和部署变得更加高效。       

       少一点手工拷贝,多一点统一入口;       
       少一点重复折腾,多一点标准沉淀。     

最新文章

随机文章