Код: Выделить всё
Dependency confusion
Я пытаюсь автоматизировать процесс, чтобы выявить путаницу в зависимостях в моем коде для импортированной библиотеки.
Код: Выделить всё
import sys
import requests
from packaging import version
def check_package_before_import(package_name):
if package_name in sys.stdlib_module_names:
return None, True
try:
pypi_url = f"https://pypi.org/pypi/{package_name}/json"
response = requests.get(pypi_url)
if response.status_code == 404:
return f"SECURITY ALERT: Package '{package_name}' not found on PyPI!", False
if response.status_code == 200:
return None, True
except Exception as e:
return f"Error checking package '{package_name}': {str(e)}", False
return None, True
def safe_import(package_name):
warning, is_safe = check_package_before_import(package_name)
if warning:
print(warning)
return None
if is_safe:
try:
module = __import__(package_name)
return module
except ImportError as e:
print(f"Failed to import {package_name}: {str(e)}")
return None
return None
if __name__ == "__main__":
np = safe_import('numpyy')
pd = safe_import('pandas')
suspicious = safe_import('totally-fake-package')
- HTTP-запрос к PyPI — каждый раз требовался Интернет для проверки зависимостей.
- Внутренние пакеты компании, не использующие PyPI, будут заблокированы
Код: Выделить всё
================= RESTART: C:\Users\Bhargav\Downloads\getid.py =================
SECURITY ALERT: Package 'numpyy' not found on PyPI!
SECURITY ALERT: Package 'totally-fake-package' not found on PyPI!
Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-python