Внедрение библиотеки Python в моем собственном пакете

Хо можно ли "встроить" библиотеку Python в свой собственный пакет Python?

Возьмите Библиотека запросов, например. Как я могу интегрировать его в свой собственный пакет, цель которого - позволить мне запускать мое приложение на разных компьютерах без фактической установки запросов на всех, но иметь его в той же папке, что и мой пакет?

Возможно ли это?

Извините, если вопрос звучит глупо, но я довольно новичок в Python...
Спасибо!

Ответы

Ответ 1

Если это чистая библиотека python (не скомпилированные модули), вы можете просто поместить библиотеку в папку в своем проекте и добавить эту папку в путь поиска модуля. Вот пример проекта:

|- application.py
|- lib
|  `- ...
|- docs
|  `- ...
`- vendor
   |- requests
   |  |- __init__.py
   |  `- ...
   `- other libraries...

В этом примере в папке vendor содержатся все сторонние модули. Файл application.py будет содержать следующее:

import os
import sys

# Add vendor directory to module search path
parent_dir = os.path.abspath(os.path.dirname(__file__))
vendor_dir = os.path.join(parent_dir, 'vendor')

sys.path.append(vendor_dir)

# Now you can import any library located in the "vendor" folder!
import requests

Ответ 2

Если вам нужно всего лишь запустить приложение, возможно, pyinstaller упаковка - лучший вариант.

Он создаст единый пакет со всем, что необходимо, включая Python, чтобы избежать зависимостей от системы, в которой вы работаете.

Ответ 3

Не отвечая на ваш вопрос. Вы можете посмотреть setuptools. Используя этот механизм распределения пакетов, вы можете описать свои зависимости, и когда ваш пакет будет установлен, все зависимые пакеты также будут установлены. Вы должны создать файл setup.py в верхней части структуры вашего пакета, подобный:

from setuptools import setup, find_packages

setup(
    name = 'MyPackage',
    version = '1.0',
    packages = find_packages(),
    ...
    install_requires = ['requests'],
    ...
)

это будет установлено пользователем

python setup.py install

Запросы также будут автоматически установлены.