获取python工程下面的所需的所有开源依赖包

 

现在开源的项目网上很多,但是往往是不写依赖包的,导致我们不知道哪些包需要记录。

这个博文给出获取python工程下面所有开源依赖包的方法。

首先我找了有没有现成的包[1],该链接中显示的包是用来获取python 开源包(也就是带有setup.py的工程)中的依赖库。

pipreqs /home/project/location

以及

pip install yolk

都试过了,无效。

###################下面开始自己写############################

所以我们需要的逻辑是,遍历当前路径下面的每个.py文件[2]:

最终python3代码如下:

import os
 
# 遍历文件夹及其子文件夹中的文件,并存储在一个列表中
 
# 输入文件夹路径、空文件列表[]
 
# 返回 文件列表Filelist,包含文件名(完整路径)
 
def get_filelist(dir, Filelist):
    newDir = dir
    if os.path.isfile(dir):
        Filelist.append(dir)
    # # 若只是要返回文件文,使用这个
    # Filelist.append(os.path.basename(dir))
    elif os.path.isdir(dir):
        for s in os.listdir(dir):
 
            if s == ".git":   # 忽略.git文件夹
                continue
            newDir=os.path.join(dir,s)
            get_filelist(newDir, Filelist)#递归调用
    return Filelist


def find_package(lists):
    for file in lists:
        content=open(file)
        for ilne in content.readlines():
            # print(line)
            # print(type(line))
            if "import" in ilne:
                print(ilne)



if __name__ =='__main__' :
    lists = get_filelist('RSNA666_HIT2080', [])
    find_package(lists)
    print("文件数量=",len(lists))

输出结果如下:

import pandas as pd

from tqdm import tqdm

import numpy as np

from ..utils import misc

import random

import math

import cv2

from albumentations.augmentations import functional as F

from albumentations.core.transforms_interface import ImageOnlyTransform

import cv2

import os

import random

import glob

import pandas as pd
 

######################

补充:

还有个办法是直接:

 grep -r import

缺点是会在左侧显示很多路径。

Reference:

[1]https://stackoverflow.com/questions/35796968/get-all-modules-packages-used-by-a-python-project

[2]https://blog.csdn.net/C_chuxin/article/details/83446602

你可能感兴趣的:(Python)