Файл прокси рядом с клоном разработки не обязательно присутствует в развёрнутом пакете сканера. Есть две задачи: включить байты в дистрибутив, а затем найти их в установленном пакете.

Для проекта Setuptools с crawl_app/resources/proxies.txt внутри его Python-пакета запись в pyproject.toml может включить его:

[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]

Объедините это с существующей конфигурацией пакета проекта. У другого бэкенда сборки есть собственный интерфейс включения данных.

Для промежуточного ПО, способного использовать строки endpoint, Python 3.11+ может читать ресурс пакета напрямую:

from importlib.resources import files

text = files('crawl_app').joinpath('resources', 'proxies.txt').read_text(
    encoding='utf-8'
)
proxy_urls = [line.strip() for line in text.splitlines() if line.strip()]

Используйте фактическое имя пакета и проверяйте ожидаемый формат URL в читателе. Для распространяемых публичных данных endpoint используйте адреса из бесплатного списка прокси в ожидаемых промежуточным ПО протоколе и формате URL. Поиск не зависит от текущего рабочего каталога развёртывания.

Сторонняя настройка PROXY_LIST может требовать пути файловой системы вместо этих строк. При использовании importlib.resources.as_file для этого интерфейса держите его контекст открытым, пока промежуточному ПО нужен извлечённый файл. Возврат временного пути после закрытия контекста может привести к потере ресурса.

Храните производственные списки с учётными данными в предназначенном для развёртывания хранилище секретов или конфигурации. Данные пакета подходят для распространяемых данных endpoint, а не для предположения, что всё, упакованное с кодом, остаётся приватным.

Похожие статьи