獲取python工程下面的所需的所有開源依賴包

2021-09-28 21:41:35 字數 1797 閱讀 9317

現在開源的專案網上很多,但是往往是不寫依賴包的,導致我們不知道哪些包需要記錄。

這個博文給出獲取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):

# # 若只是要返回檔案文,使用這個

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_inte***ce import imageonlytransform

import cv2

import os

import random

import glob

import pandas as pd

補充:還有個辦法是直接:

grep -r import

缺點是會在左側顯示很多路徑。

reference:

[1][2]

獲取某個父節點下面的所有子節點(遞迴查詢)

1.建立乙個list集合,集合裡面包括父節點和子節點 建立乙個list集合,集合裡面包括所有父節點和子節點 public static void main string args 子節點 static list childmenu new arraylist 2.獲取某個父節點下面的所有子節點 pu...

python遍歷指定資料夾下面的檔案名字

在我們做深度學習的資料處理的時候,需要用到資料集的 train.txt 也就是遍歷指定路徑資料夾下面的路徑和名字,然後生成乙個 train.txt 下面是python的一種遍歷方法。import os import numpy as np defcreate txt name,path,file i...

Python使用正規表示式獲取網頁中所需要的資訊

使用正規表示式的幾個步驟 1 用import re 匯入正規表示式模組 2 用re.compile 函式建立乙個regex物件 3 用regex物件的searc程式設計客棧h 或findall 方法,傳入想要查詢的字串,返回乙個match物件 4 呼叫match物件的group 方法,返回匹配到的字...