Использовать собственный пакет Python

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

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

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

Вопрос в том, как я могу проверить, нормально ли работает библиотека при использовании из скриптов?

До сих пор, чтобы иметь возможность импортировать пользовательскую библиотеку из скриптов, я рассмотрел 3 различных альтернативы:

  1. Как установленный пакет с pip или около того

  2. Как-то скачиваем пакет в директорию и переделываем pythonpath

  3. Как каталог в папке скриптов

Исходя из моего опыта работы с другими языками, вариант 1 был бы лучшим, поскольку, вероятно, было бы легче обрабатывать выпуски пакетов, и все было бы «стандартным» способом, однако в моем случае это может быть как-то сложно, поскольку исходный код пакета размещен в частный сервер Gitlab, изолированный от производственной среды.

Варианты 2 и 3 кажутся мне обходными путями и не очень похожи на «хороший способ» использования пользовательской библиотеки.

Есть ли другие альтернативы в Python для эффективного использования пакета?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
153
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Безусловно, лучший способ распространять пакет - через pip. Эта функция проста в использовании, и конечный пользователь не имеет проблем с компилятором, о которых уже позаботились при распространении. pip особенно полезен, если ваш пакет содержит расширения C, поскольку компиляция в операционных системах (в частности, Windows) может быть кошмаром.

Другой способ (аналогичный 2) - установить из источника, то есть файла setup.py, а не добавлять путь к python, просто установите его, как и с pip:

Вам понадобится сценарий установки setuptools. Когда вы будете готовы к сборке, запустите:

python setup.py build

ИЛИ ЖЕ сборка python ./setup.py

если вы работаете в PowerShell.

Это создаст сжатый файл, содержащий исходный код (скомпилированный в случае расширений), и вы сможете его распространять.

Конечному пользователю просто нужно запустить:

python setup.py install 

ИЛИ python ./setup.py install на PowerShell, чтобы установить пакет.

Начиная с того, как использовать собственный пакет

вы должны определить, какова цель этого пакета. То есть то, что будет полезно всем или только вам. В первом случае лучше всего опубликовать его на PyPI (в этом случае выполните все шаги). Если это вторая цель, пропустите шаг 5.

Затем, какова бы ни была цель вашего пакета, первые шаги:

  1. Разработайте пакет (попробуйте его задокументировать и протестировать). PyCharm - это хорошая IDE, которая может помочь в создании модульных тестов. Я рекомендую вам взглянуть на следующую ссылку: Создание и запуск Python_Test

    Структура папок Project Test, над которой я работал

  2. Второй шаг - создать файл setup.py. Файл setup.py может содержать множество полей. Вот вам пример:

      from setuptools import setup
    
    
      setup(
      name='mdutils',
      version=1.0,
      license='BSD',
      author='Didac Coll',
      author_email='[email protected]',
      maintainer='Dídac Coll',
      maintainer_email='[email protected]',
      description='A package, useful to create Markdown files while executing python code.',
      long_description=open('README.md').read(),
      platforms=['Python 3.6'],
      packages=['mdutils', 'mdutils.tools', 'mdutils.fileutils'],
      include_package_data=True,
      zip_safe=False,
      classifiers=['Development Status :: 4 - Beta',
                   'Operating System :: OS Independent',
                   'Programming Language :: Python',
                   'Programming Language :: Python :: 3.6',
               'Topic :: Utilities',
               'License :: OSI Approved :: BSD License'])
    
  3. После того, как вы создали свой пакет, вы должны протестировать дистрибутив с помощью следующей команды python setup.py develop

  4. Если все в порядке, теперь вы можете создать свой дистрибутив с помощью следующей команды python setup.py sdist. Это создаст новую папку с именем dist, в которой вы найдете файл tar.gz. Если вы заинтересованы в создании дистрибутива для Windows, я рекомендую вам использовать следующую команду python setup.py sdist --format=zip. Таким образом, вы собираетесь создать zip-файл в папку dist.

    Теперь у вас есть собственный дистрибутив пакета в сжатом файле. Так что если ты хочешь чтобы установить его в проект, достаточно использовать только pip: pip install mdutils- 1.0.zip. Вы также можете обновить его, используя следующую команду python: python install --upgrade mdutils-2.0.zip.

    Выполнение предыдущих команд установит ваш пакет в папку вашего сайта.

    Здесь вы найдете много информации об упаковке и распространении: https://packaging.python.org/tutorials/distributing-packages/

Здесь тоже есть хороший учебник: https://python-packaging.readthedocs.io/en/latest/

  1. Наконец, если ваш проект работает правильно, вы можете опубликовать его на PyPi. Вы должны создать учетную запись. Когда он у вас есть, используйте следующую команду для регистрации вашего пакета: python setup.py register. Я настоятельно рекомендую вам протестировать его на TestPyPI, прежде чем пытаться опубликовать на PyPI. Создайте еще одну учетную запись здесь: https://test.pypi.org/ и введите эту команду в своем терминале PyCharm: twine upload --repository-url https://test.pypi.org/legacy/ dist/* (Подробнее о TestPyPI здесь).

Другие вопросы по теме