сжатая версия того, чего я хочу достичь : создайте пакеты .rpm и .deb из моего исходного кода source.py и убедитесь, что все зависимости разрешены при их установке на основе deb / rpm linux дистрибуция.
Подробнее : Предположим, я создал программный продукт, который расположен в структуре папок, например:
---MyProgram Folder
---MyProgram Folder
---img Folder
---logo.ico File
---media Folder
---head.txt File
---__init__.py File
---source.py File
---a.py File
---LICENSE File
---README.md File
---setup.py File
Настройка файла. py содержит следующее:
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="MyProgram",
version="0.0.1",
author="First Last",
author_email="email@memore.com",
description="A tool to create nice things",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://google.com",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.7',
data_files=[
('.../MyProgram/img/logo.ico'),
('.../MyProgram/media/head.txt'),
],
)
Теперь я запускаю
python setup.py sdist bdist_rpm
из строки cmd в «... / MyProgram». Создаются две папки 'dist' и 'build', а также 'MyProgram.tar.gz' и 'MyProgram-noarch.rpm' в двух rpm и 'MyProgram-sr c .rpm'. Когда я пытаюсь установить 'noarch.rpm' в fedora 31, процесс успешно завершается, но «ярлык» не создается, и когда я набираю MyProgram в строке cmd, он не обнаруживается.
rpm -ql MyFilter
находит он выводит несколько путей:
/usr/lib/python3.7/site-packages/MyProgram/...
/usr/lib/python3.7/site-packages/MyProgram/source.py
/usr/lib/python3.7/site-packages/MyProgram/a.py
....
Что говорит мне о том, что моя установка по крайней мере скопировала файловую систему basi c. Но я также вижу, что все исходные файлы .py по-прежнему являются файлами .py.
Мои вопросы:
- Как я могу «сделать» об / мин так что все зависимости содержатся в rpm или, по крайней мере, разрешаются с помощью dnf / apt / yum при установке rpm? В другой формулировке: возможно ли объединить все зависимости в rpm / deb, как, например, в .exe?
- Как я могу указать путь, например, '/ usr / bin' или 'usr / share' как цель установки dir?
- Как я могу добавить приложение запуска, включенное в rpm / deb?
- Является ли все вышесказанное хорошим способом сделать это вообще?
Если решение это тривиально, и я просто упустил из виду, мне очень жаль беспокоить вас, но я просто не вижу этого. Сайты, которые имеют соответствующую информацию и которые я уже рассмотрел:
https://docs.python.org/2.0/dist/creating-rpms.html
https://github.com/AppImage/AppImageKit/wiki/Bundling-Python-apps
Python 3.5 создать .rpm с помощью сгенерированного Pyinstaller исполняемого файла
https://github.com/junaruga/rpm-py-installer
https://www.pyinstaller.org/
https://packaging.python.org/overview/#python -источники-распределения
https://packaging.python.org/overview/
https://pyinstaller.readthedocs.io/en/stable/usage.html
https://pyinstaller.readthedocs.io/en/stable/installation.html
https://python-packaging-tutorial.readthedocs.io/en/latest/setup_py.html