util/lib/analysis_package/utils/project_util.py

62 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project IoD_data_analysis_tool
@File project_util.py
@IDE PyCharm
@Author rengengchen
@Time 2022/9/15 9:45
"""
import compileall
import os
import re
import shutil
from os.path import join
from lib.analysis_package.utils.file_util import walk
re_pyc = re.compile(r'cpython-\d+\.')
def compile_project(source, target=None):
"""
编译项目为pyc文件到指定目录
@param source: 项目路径
@param target: 编译文件存放路径
"""
source = os.path.abspath(source)
if target is None:
target = source
else:
target = os.path.abspath(target)
compileall.compile_dir(source)
pycache_paths = set()
if target == source:
for root, dirname, filename in walk(source):
if root[-11:] == '__pycache__':
pycache_paths.add(root)
shutil.move(join(root, filename), join(root, '../', re_pyc.sub('', filename)))
if filename and filename.endswith('py'):
os.remove(join(root, filename))
else:
if target is None:
target = join(source, 'dist')
len_t = len(target)
for root, dirname, filename in walk(source):
t_root = root.replace(source, target)
if target == root[:len_t]:
continue
if dirname and dirname != '__pycache__':
t_root = join(t_root, dirname)
if not os.path.exists(t_root) and join(source, dirname) != target:
os.makedirs(t_root)
elif filename and not filename.endswith('py'):
if root[-11:] == '__pycache__':
pycache_paths.add(root)
t_root = t_root[:-11]
shutil.move(join(root, filename), join(t_root, re_pyc.sub('', filename)))
else:
shutil.copyfile(join(root, filename), join(t_root, filename))
for p in pycache_paths:
os.rmdir(p)