Структура проекта примерно такая:
project/
|-- src/
| |--sub_project1/
| |--__init__.py
| |-- main.py
| |-- __init__.py
| |-- requirements.txt
|
|-- setup.py
|-- README.md
|-- MANIFEST.in
Я начал с setuptools
, чтобы упаковать свой проект. Я думаю, что мне удалось создать дистрибутив, но я не уверен в более позднем процессе, как тщательно настроить проект в виртуальной среде (venv
) для запуска src\sub_project1\main.py
.
Шаги, которые я выполнил до сих пор:
- Создан с
requirements.txt
поpipreqs
. - Создан
setup.py
, который устанавливаетinclude_package_data=True
для включенияrequirements.txt
, упомянутого вMANIFEST.in
.
setup.py
:
from setuptools import setup, find_packages
import pkg_resources
with open("README.md", "r") as fh:
long_description = fh.read()
# read data from .txt as str, decode and then split to get a list of requirements
requirements = pkg_resources.resource_string('src', 'requirements.txt').decode("utf-8").split()
setup(
...
packages=find_packages(),
include_package_data=True,
install_requires=requirements,
...
)
MANIFEST.in
:
include *.txt
Сгенерировал раздачу:
python setup.py sdist bdist_wheel
Теперь, когда я упаковал проект, я хочу создать виртуальную среду, настроить зависимости и запустить ее.
Я начал с создания виртуальной среды, используя python -m venv <DIR>
. И есть одна из двух следующих команд для установки всех требований:
pip install -r requirements.txt
or
pip install ./downloads/SomeProject-1.0.4.tar.gz
который устанавливает все необходимые пакеты. Но с этого момента я не уверен, что смогу выполнить шаги для фактического выполнения моего сценария. Как реально выполнить проект в созданной виртуальной среде?
Кроме того, у меня есть несколько вопросов:
setup.py
используется только для установки требований? Чем две приведенные выше команды отличаются с точки зрения вывода?- Помимо установки требований, вам нужно вручную поместить файлы проекта в нужный каталог? Поскольку pip install *.tar.gz не распаковывал файлы проекта!
- Как использовать
entry_points
в setup.py?
venv
и хочу, чтобыsrc\sub_project1\main.py
исполнялся. Я включаюsrc\requirements.txt
в пакет, используяinclude_package_data=True
иMANIFEST.in
. - person DEEPAK SURANA   schedule 19.06.2018