Просьба показать простой и современный стандартный способ создания пакета python для python 2.x
Я бы предпочел использовать pip для установки пакета позже.
Пакет должен содержать один класс:
class hello:
def greet(self):
print "hello"
Вы должны иметь возможность сделать следующее:
pip install my_package-0.1.1....
И затем используя его:
from my_package import hello
h = hello.hello()
h.greet()
Я прошу:
- Каталог и расположение файлов
- Содержание файлов
- для создания дистрибутивного файла пакета
- чтобы установить пакет из дистрибутивного файла пакета (используя предпочтительно пип)
Есть несколько howtos, которые я нашел, но я до сих пор не знаю, как этот простой и урезанный случай (без вложенных пакетов, удаления всех файлов и функций, которые могут быть опущены для самого простого случая), будет обрабатываться и это современный способ сделать это.
Я бы хотел, чтобы этот вопрос попал в состояние вики сообщества, поэтому вы не получите никаких очков, и я дам достаточно времени и помету ответ, принятый через несколько дней, также учитывая голоса и комментарии.
Edit:
У меня есть первый пример, который я хочу поделиться, я использовал Marius Gedminas для ответа. Он не содержит всего, что должно быть там, но оно работает, поэтому оно может продемонстрировать суть технического процесса. Чтобы добавить более необходимые детали, пожалуйста, прочитайте ответ Мариуса ниже.
Структура каталогов:
MyProject/
setup.py
my_package.py
README.txt
MANIFEST.in
setup.py:
from setuptools.import setup
setup(name='MyProject',
version='0.1',
py_modules=['my_package'])
my_package.py:
class hello:
def greet(self):
print "hello"
MANIFEST.in:
include *.txt
Чтобы создать пакет из этой папки, зайдите в папку MyProject и запустите:
$ python setup.py sdist
Это создаст файл MyProject-0.1.tar.gz
в подпапке dist/
. Скопируйте этот файл в папку на целевой машине.
На целевой машине запустите эту команду в папке, содержащей MyProject-0.1.tar.gz
:
sudo pip install MyProject-0.1.tar.gz
Теперь может потребоваться выйти и снова войти на целевую машину, чтобы пакет был найден. После этого вы можете протестировать пакет на целевой машине с помощью оболочки python:
$ python
>>> import my_package
>>> h = my_package.hello()
>>> h.greet()
hello
>>>
После этого, пожалуйста, не забудьте добавить другое необходимое содержимое, см. ниже ответ Мариуса.