#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 字典 是鍵值...