網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
取最小安裝包
使用python-3.7.3-embed-win32,注意對(duì):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,并在有網(wǎng)終的情況下安裝好環(huán)境
::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打包好環(huán)境,注意打包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卸載自己,需要用下列語(yǔ)句
python -m pip uninstall pip -y
rd /s /q Lib
rd /s /q Scripts
pause
壓縮清理后的環(huán)境,并傳入有網(wǎng)絡(luò)的環(huán)境后,解壓基礎(chǔ)環(huán)境
::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
編寫(xiě)配置環(huán)境變量的腳本
:: 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服務(wù),并初始化好環(huán)境,這里需要依賴(lài)nssm,需要自行下載,注意nssm需要管理員權(quán)限
::install_service.bat
set svr_name=devpi
set svr_dir=d:\devip_server_datas
cd /d "%~dp0"
::用于獲取權(quán)限
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
如果不需要了,則卸載相關(guān)服務(wù)
::remove_service.bat
net stop devpi
nssm remove devpi confirm
pause
鏡像更新問(wèn)題
編寫(xiě)基礎(chǔ)功能腳本文件, 并放到pythong.exe同級(jí)目錄
# 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=請(qǐng)輸入需要下載的包名,用空格隔開(kāi):
inv down -p "%down_pkgs%"
goto :download
pause
導(dǎo)出需要鏡像的包,并上傳鏡像包到無(wú)網(wǎng)絡(luò)的環(huán)境里
:: 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=請(qǐng)輸入需要下載的包名 用空格隔開(kāi)
inv up
pause
導(dǎo)入鏡像
to do...
原文鏈接:https://blog.csdn.net/HarmonyFairly/article/details/126980964
相關(guān)推薦
- 2022-10-16 Python?re.findall中正則表達(dá)式(.*?)和參數(shù)re.S使用_python
- 2023-01-31 Android位圖(圖片)加載引入的內(nèi)存溢出問(wèn)題詳細(xì)解析_Android
- 2023-05-06 Python寫(xiě)一個(gè)簡(jiǎn)單的api接口的實(shí)現(xiàn)_python
- 2022-06-09 ASP.NET?Core使用EF創(chuàng)建模型(必需和可選屬性、最大長(zhǎng)度、并發(fā)標(biāo)記、陰影屬性)_實(shí)用技巧
- 2022-10-27 教你快速搭建?React?Native?開(kāi)發(fā)環(huán)境_React
- 2022-03-15 azkaban.utils.UndefinedPropertyException: Missing
- 2023-04-21 深入理解Python中__init__.py文件_python
- 2022-06-12 一文教會(huì)你在sqlserver中創(chuàng)建表_MsSql
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支