modulefinder --- Tìm các mô-đun được sử dụng bởi tập lệnh

Source code: Lib/modulefinder.py


Mô-đun này cung cấp một lớp ModuleFinder có thể được sử dụng để xác định tập hợp các mô-đun được nhập bởi tập lệnh. modulefinder.py cũng có thể được chạy dưới dạng tập lệnh, lấy tên tệp của tập lệnh Python làm đối số, sau đó báo cáo về các mô-đun đã nhập sẽ được in.

modulefinder.AddPackagePath(pkg_name, path)

Ghi lại rằng gói có tên pkg_name có thể được tìm thấy trong path được chỉ định.

modulefinder.ReplacePackage(oldname, newname)

Cho phép chỉ định module có tên oldname trên thực tế là gói có tên newname.

class modulefinder.ModuleFinder(path=None, debug=0, excludes=[], replace_paths=[])

Lớp này cung cấp các phương thức run_script()report() để xác định tập hợp các mô-đun được nhập bởi tập lệnh. path có thể là danh sách các thư mục để tìm kiếm mô-đun; nếu không được chỉ định, sys.path sẽ được sử dụng. debug đặt mức gỡ lỗi; giá trị cao hơn làm cho lớp in ra các thông báo gỡ lỗi về những gì nó đang làm. excludes là danh sách tên mô-đun cần loại trừ khỏi phân tích. replace_paths là danh sách các bộ dữ liệu (oldpath, newpath) sẽ được thay thế trong đường dẫn mô-đun.

report()

In một báo cáo ra đầu ra tiêu chuẩn liệt kê các mô-đun được nhập bởi tập lệnh và đường dẫn của chúng, cũng như các mô-đun bị thiếu hoặc dường như bị thiếu.

run_script(pathname)

Phân tích nội dung của tệp pathname, tệp này phải chứa mã Python.

modules

Một từ điển ánh xạ tên mô-đun tới các mô-đun. Xem Ví dụ sử dụng ModuleFinder.

Ví dụ sử dụng ModuleFinder

Tập lệnh sẽ được phân tích sau (bacon.py):

nhập lại, itertools

thử:
    nhập khẩu thịt xông khói
ngoại trừ lỗi nhập khẩu:
    vượt qua

thử:
    nhập hướng dẫn.python.ham
ngoại trừ lỗi nhập khẩu:
    vượt qua

Tập lệnh sẽ xuất báo cáo của bacon.py:

từ nhập modulefinder ModuleFinder

công cụ tìm = ModuleFinder()
finder.run_script('bacon.py')

print('Các mô-đun đã tải:')
cho tên, mod trong finder.modules.items():
    print('%s: ' % name, end='')
    print(','.join(list(mod.globalnames.keys())[:3]))

in('-'*50)
print('Mô-đun không được nhập:')
print('\n'.join(finder.badmodules.keys()))

Đầu ra mẫu (có thể thay đổi tùy theo kiến trúc):

Các -đun đã tải:
_loại:
sao chép: _inverted_registry,_slotnames,__all__
re._compiler: isstring,_sre,_optimize_unicode
_sre:
re._constants: REPEAT_ONE,makedict,AT_END_LINE
hệ thống:
lại: __module__,finditer,_expand
itertools:
__main__: re,itertools,baconhameggs
re._parser: _PATTERNENDERS,SRE_FLAG_UNICODE
mảng:
các loại: __module__,IntType,TypeType
---------------------------------------------------
Các -đun không được nhập:
guido.python.ham
thịt xông khói