python 镜像环境搭建总结


Posted in Python onSeptember 23, 2022

取最小安装包

使用python-3.7.3-embed-win32,注意对:python37._pth的修改,修改方法:

# uncomment_pth.py
from pathlib import Path
def main(path_cur):
    for p in path_cur.glob('*._pth'):
        if not (p.suffix == '._pth' and p.stem.startswith('python')):
            continue
        print('found: ' + str(p))
        f_lines = []
        with p.open() as f:
            for line in f.readlines():
                if line.startswith('#import site'):
                    line = line.split('#', 2)[1]
                f_lines.append(line)
        with p.open('w') as f:
            f.writelines(f_lines)
        return True
    return False

if __name__ == '__main__':
    path_cur = Path('.')
    main(path_cur)

使用get-pip.py安装pip,并在有网终的情况下安装好环境

::first_install_with_net.bat
 
set old_dir=%cd%
 
cd /d "%~dp0"
 
python uncomment_pth.py
python get-pip.py
pip install devpi devpi-web
 
cd /d "%old_dir%"
pause

使用pip打包好环境,注意打包get-pip.py

::pkg_py_env.bat
 
set req=..\req_pkg_py_env.txt
set whs=..\wheels
pip freeze >%req%
pip wheel -r %req% -w %whs%
pip wheel pip -w %whs%
pip wheel setuptools -w %whs%
pip wheel wheel -w %whs%
pip uninstall wheel -y
pip uninstall setuptools -y
:: pip 不能用pip卸载自己,需要用下列语句
python -m pip uninstall pip -y
rd /s /q Lib
rd /s /q Scripts
pause

压缩清理后的环境,并传入有网络的环境后,解压基础环境

::unpkg_py_env.bat
 
set req=..\req_pkg_py_env.txt
set whs=..\wheels
set get-pip=%~dp0get-pip.py
set uncomment=%~dp0uncomment_pth.py
python %uncomment%
python %get-pip% --no-index --find-links=%whs%
set PATH=%PATHON_HOME%\Scripts
pip install  -r %req% --no-index --find-links=%whs%
 
pause

编写配置环境变量的脚本

:: py_env.bat
 
@echo off
set old_dir=%cd%
cd /d "%~dp0"
set PATHON_HOME=%cd%
set PATH=%PATHON_HOME%\;%PATHON_HOME%\Scripts;%PATH%
title Ptython Env:PATHON_HOME=%PATHON_HOME%
cd /d "%old_dir%"
 
if "%1" == "" call cmd 
 
REM @echo off
REM set PYTHONHOME=%cd%
REM set PATH=%PYTHONHOME%/Scripts;%PYTHONHOME%;%PATH%
 
REM set PYTHONPATH=%PYTHONHOME%/Lib
REM title %PYTHONHOME%\python.exe
REM call cmd

安装devpi-server服务,并初始化好环境,这里需要依赖nssm,需要自行下载,注意nssm需要管理员权限

::install_service.bat
 
set svr_name=devpi
set svr_dir=d:\devip_server_datas
cd /d "%~dp0"
::用于获取权限
nssm
call py_env.bat
devpi-init --serverdir %svr_dir%
devpi-gen-config --serverdir %svr_dir%
nssm install %svr_name% "%cd%\Scripts\devpi-server.exe" --serverdir %svr_dir% --host 0.0.0.0
pause
nssm start %svr_name%
devpi use root/pypi --always-set-cfg=yes
pause

如果不需要了,则卸载相关服务

::remove_service.bat
 
net stop devpi
nssm remove devpi confirm
pause

镜像更新问题

编写基础功能脚本文件, 并放到pythong.exe同级目录

# tasks.py
 
import datetime
import io
import os
from invoke import task
from tqdm import tqdm
 
# @task
# def package(c):
#     dir_path = datetime.datetime.now().strftime('%Y_%m_%d-%H_%m_%S-devpi_server_datas')
#     c.run(f'devpi-export.exe --serverdir D:\\devip_server_datas --include-mirrored-files {dir_path}')
#     c.run(fr'"C:\Program Files\WinRAR\Rar.exe" a {dir_path}.zip {dir_path}')
#     # print('hello')

@task(iterable=['p'])
def down(c, p):
    from pathlib import Path
    Path(r'tmp_whl_dirs').mkdir(exist_ok=True)
    c.run(fr'cd tmp_whl_dirs & pip download {" ".join(p)}')
@task
def up(c):
    dir_path = datetime.datetime.now().strftime('%Y_%m_%d-%H_%m_%S-devpi_server_datas')
    c.run(f'devpi-export.exe --serverdir D:\\devip_server_datas --include-mirrored-files {dir_path}')
    c.run(fr'"C:\Program Files\WinRAR\Rar.exe" a {dir_path}.zip  {dir_path}')
 
    from ftplib import FTP
    ftp = FTP('xxx')
    ftp.login('xxx', 'xxxxx')
    # ftp.cwd('devip_server_datas')
 
    with open(dir_path + '.zip', 'rb') as f:
        f.seek(0, io.SEEK_END)
        file_size = f.tell()
        f.seek(0, io.SEEK_SET)
        with tqdm(unit='blocks', unit_scale=True, leave=True, miniters=1, desc='Uploading......',
                  total=file_size) as tqdm_instance:
            ftp.storbinary(f'STOR {dir_path}.zip', f, 2048, callback=lambda sent: tqdm_instance.update(len(sent)))
    c.run('net stop devpi')
    c.run('net start devpi')
        # ftp.storbinary(f'STOR {dir_path}.zip', f)
    # print('finished!!')
    # os.unlink(dir_path)

下载需要的包:

:: down.bat
@echo off
set old_dir=%cd%
cd /d "%~dp0"
set PATHON_HOME=%cd%
set PATH=%PATHON_HOME%\;%PATHON_HOME%\Scripts;%PATH%
title Ptython Env:PATHON_HOME=%PATHON_HOME%
 
:download
 
set /p down_pkgs=请输入需要下载的包名,用空格隔开:
inv down -p "%down_pkgs%"
 
goto :download
pause

导出需要镜像的包,并上传镜像包到无网络的环境里

:: up_load.bat
@echo off
set old_dir=%cd%
cd /d "%~dp0"
set PATHON_HOME=%cd%
set PATH=%PATHON_HOME%\;%PATHON_HOME%\Scripts;%PATH%
title Ptython Env:PATHON_HOME=%PATHON_HOME%
REM set /p down_pkgs=请输入需要下载的包名 用空格隔开
inv up
pause

导入镜像

to do...

到此这篇关于python 镜像环境搭建总结的文章就介绍到这了,更多相关python 镜像搭建内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python通过pil将图片转换成黑白效果的方法
Mar 16 Python
浅要分析Python程序与C程序的结合使用
Apr 07 Python
全面了解python字符串和字典
Jul 07 Python
Python爬虫获取整个站点中的所有外部链接代码示例
Dec 26 Python
python根据unicode判断语言类型实例代码
Jan 17 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
详解PyCharm配置Anaconda的艰难心路历程
Aug 13 Python
Python面向对象之类和对象实例详解
Dec 10 Python
Python random模块制作简易的四位数验证码
Feb 01 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 Python
OpenCV-Python直方图均衡化实现图像去雾
Jun 07 Python
如何利用Python实现一个论文降重工具
Jul 09 Python
Python创建SQL数据库流程逐步讲解
Sep 23 #Python
Python爬取奶茶店数据分析哪家最好喝以及性价比
Sep 23 #Python
使用python生成大量数据写入es数据库并查询操作(2)
Sep 23 #Python
Python sklearn分类决策树方法详解
详解Golang如何实现支持随机删除元素的堆
python中validators库的使用方法详解
Sep 23 #Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 #Python
You might like
第1次亲密接触PHP5(1)
2006/10/09 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
Python实现字典的key和values的交换
2015/08/04 Python
一份python入门应该看的学习资料
2018/04/11 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
微信公众号token验证失败解决方案
2019/07/22 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
Python实现井字棋小游戏
2020/03/09 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
董事长秘书岗位职责
2013/11/29 职场文书
学习之星事迹材料
2014/05/17 职场文书
优秀班组长事迹
2014/05/31 职场文书
征兵宣传标语
2014/06/20 职场文书
社区平安建设汇报材料
2014/08/14 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang
javascript对象3个属性特征
2021/11/17 Javascript