python 鏡像環(huán)境搭建總結(jié)
取最小安裝包
使用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卸載自己,需要用下列語句 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
編寫配置環(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)境,這里需要依賴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
鏡像更新問題
編寫基礎(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)輸入需要下載的包名,用空格隔開: inv down -p "%down_pkgs%" goto :download pause
導(dǎo)出需要鏡像的包,并上傳鏡像包到無網(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)輸入需要下載的包名 用空格隔開 inv up pause
導(dǎo)入鏡像
to do...
到此這篇關(guān)于python 鏡像環(huán)境搭建總結(jié)的文章就介紹到這了,更多相關(guān)python 鏡像搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python深入了解defaultdict之輕松處理默認(rèn)值與復(fù)雜數(shù)據(jù)結(jié)構(gòu)
在Python標(biāo)準(zhǔn)庫collections模塊中,defaultdict提供了一種在字典訪問不存在的鍵時(shí)自動(dòng)提供默認(rèn)值的便利方式,這篇文章詳細(xì)介紹了defaultdict的使用方法、基礎(chǔ)概念、創(chuàng)建實(shí)例的步驟以及應(yīng)用場(chǎng)景,需要的朋友可以參考下2024-09-09使用python把json文件轉(zhuǎn)換為csv文件
這篇文章主要介紹了使用python把json文件轉(zhuǎn)換為csv文件,幫助大家更好的利用python處理數(shù)據(jù),感興趣的朋友可以了解下2021-03-03numpy中np.dstack()、np.hstack()、np.vstack()用法
numpy里dstack, hstack, vstack, 都有拼接的作用,本文詳細(xì)的介紹了np.dstack()、np.hstack()、np.vstack()用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Python turtle實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了Python turtle實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06深入學(xué)習(xí)Python可變與不可變對(duì)象操作實(shí)例
Python中的數(shù)據(jù)類型可以分為可變對(duì)象和不可變對(duì)象,了解它們之間的區(qū)別對(duì)于編寫高效的Python代碼至關(guān)重要,本文將詳細(xì)介紹可變對(duì)象和不可變對(duì)象的概念,以及如何正確地使用它們來提高代碼的性能和可讀性2023-12-12