Как реализовать две разные сборки для моего проекта Python? Один для загрузки в pypi, а другой для локального использоваPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как реализовать две разные сборки для моего проекта Python? Один для загрузки в pypi, а другой для локального использова

Сообщение Anonymous »

Я создал базовый проект Python. По своей сути проект использует файл toml для хранения всех конфигураций и правил сборки (см. ниже):

Код: Выделить всё

[project]
authors = [{ name = "name", email = "[email protected]" }]
name = "name"
version = "0.0.0"
description = "description"
readme = { file = "README.md", content-type = "text/markdown" }
license = { file = "LICENSE" }
keywords = ["key", "words"]
dependencies = ["requests", "filetype", "pypdf", "mypy", "types-requests"]
classifiers = [
"Intended Audience :: Developers",
"Programming Language :: Python :: 3.11",
"Operating System :: POSIX :: Linux",
"Operating System :: Unix",
]

[project.urls]
Repository = "https://www.myrepo.com/"

[project.scripts]
scripts = "package_name.main:main"

[build-system]
requires = ["setuptools>=42", "wheel", "mypy", "types-requests"]
build-backend = "setuptools.build_meta"

[tool.black]
line-length = 120

[tool.isort]
line_length = 120
profile = "black"

[tool.mypy]
ignore_missing_imports = true

[tool.commitizen]
name = "cz_conventional_commits"
tag_format = "$version"
version_files = ["./pyproject.toml", "./package_name/_version.py:__version__"]
version_scheme = "semver"
version_provider = "pep621"
update_changelog_on_bump = true
Я обнаружил, что выполнение кода происходит довольно медленно по сравнению с чем-то вроде Go, и я хотел добиться легкой прибыли. Итак, я решил создать свой проект с помощью mypycify. Однако для этого мне нужно найти все файлы Python, которые я хочу передать в mypycify, используя glob, поэтому мне также нужно иметь setup.py как часть сборки моего проекта. Содержимое setup.py:

Код: Выделить всё

#!/usr/bin/env python

from glob import glob

from mypyc.build import mypycify
from setuptools import find_packages, setup

paths: list[str] = glob("package_name/**.py")
paths += glob("package_name/src/**.py")

setup(
packages=find_packages(exclude=["*tests*"]),
ext_modules=mypycify(paths),
)
Запуск сборки python3 -m с этими конфигурациями создает следующие файлы: Вот моя проблема. Мне нужен мой проект для создания колеса, подходящего для загрузки в pypi для любой системы, а не строго для моей собственной (как мы сгенерировали выше). Для этого мне нужно удалить или закомментировать ext_modules=mypycify(paths) из setup.py и создать: Отлично! Но какое решение я могу применить, чтобы сгенерировать и то, и другое? Одно для загрузки в pypi, а другое, когда разработчики хотят создавать локально с оптимизацией mypycify.
Самое простое решение — создать два пакета с разными именами. Один уникальный файл setup.py для каждого, единственное отличие которого состоит в том, что у одного есть ext_modules=mypycify(paths),, а у другого нет. Но в моем случае это кажется глупым, поскольку единственной разницей будет эта строка в setup.py.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ploading-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»