Python 製作精簡的Python綠色發行包

2021-06-09 04:24:44 字數 2212 閱讀 3262

#coding=gbk

##最小python3.2環境, 可以在minipython目錄下,直接執行python.exe(或pythonw.exe)。

##前提:

#    需要安裝vcredist_x86.exe包

##製作原理:

#    1. 把python***目錄完整拷貝到製作目錄,修改原有的python***目錄為其它名稱,使python不直接使用。

#    2. 刪除製作目錄及子目錄裡的pyc,pyo檔案

#    3. 執行製作目錄下的python,然後退出

#    4. 根據重新生成的pyc檔案找到需要的py檔案到對應目錄

#    5. 從而得到了最小的python執行環境

##示例:

#    1. 把python32目錄下的檔案拷貝到c:\temp\python32

#    2. 刪除c:\temp\python32目錄及其子目錄下的所有pyc,pyo檔案

#    3. 在控制台下執行: 

#        c:\temp\python32\python.exe e:\2012\setup\findminpython.py

#    4. 上面的命令會將需要的py檔案拷貝到e:\2012\setup\minipython目錄下

#    5. 將python.exe, pythonw.exe, python32.dll拷貝到e:\2012\setup\minipython目錄下

#    精簡的python32使用環境就找出來了, 

## 匯入基礎模組

import os

import shutil

def visitdirfile(dir, visitor):

'''遞迴訪問目錄及其子目錄下的檔案'''

assert(os.path.isdir(dir)), dir

for i in os.listdir(dir):

fullpathname = os.path.join(dir, i)

if os.path.isfile(fullpathname):

if visitor(fullpathname):

return true

elif os.path.isdir(fullpathname):

# 訪問子目錄

if visitdirfile(fullpathname, visitor):

return true

def findpyfile(file):

'''查詢相應的py檔案(不考慮pyo檔案)'''

if file[-4:] == '.pyc':

# 得到編譯檔案對應的原始檔

dir = os.path.dirname(file)

if dir.endswith('__pycache__'):

dir = dir[:-11]

# 檔案中可能有點存在,要排除3.2之後的快取

name, ext = os.path.splitext(os.path.basename(file))

name2, ext = os.path.splitext(name)

if ext.startswith('.cpython'):

name = name2

srcfile = os.path.join(dir, '%s.py' % name)

# 原始檔可能是pyw檔案

if not os.path.isfile(srcfile):

srcfile += 'w'

destfile = srcfile.replace(srcdir, destdir)

print(srcfile)

# 保證目標目錄存在

dir = os.path.dirname(destfile)

if not os.path.isdir(dir):

os.makedirs(dir)

# 拷貝檔案及狀態

shutil.copy2(srcfile, destfile)

if __name__ == '__main__':

import sys

srcdir = os.path.dirname(sys.executable)

destdir = os.path.join(os.path.dirname(__file__), 'minipython')

visitdirfile(srcdir, findpyfile)

製作 oracle 精簡班客戶端。

1,提取檔案。1 bin 2 network admin 3 ocommon nls admin data 4 oracore zoneinfo 5 rdbms mesg 6 sqlplus mesg 2 提取登錄檔,並如果安裝路徑改變對登錄檔進行修改。提取的登錄檔為 1 hkey local ma...

樹莓派精簡版映象製作

make raspberrypi3 defconfig 採用的是buildroot中樹莓派預設配置 3 還需要進行一些配置,增加部分軟體 在 toolchain中選擇採用glibc 4 增加busybox中命令程式 make busybox menuconfig 5 取消或增加核心的驅動或者功能 m...

Python精簡學習筆記 一

輸出函式 print this is a string test s 哈哈哈哈 輸入函式 s input 請輸入.陣列 sz 1,2,3,a b 元組 yz 1,2,3,aaa bbb 元組只相當於唯讀序列,陣列可以改變。sz 1 1111 accept yz 1 1111 error 字典 是鍵值...