установите модуль Python как модуль и как скрипт


Скажем, я написал модуль foo.py.

Я хочу, чтобы процесс установки скопировал foo.py в prefix/lib/pythonX.Y/site-packages, чтобы его можно было импортировать другими модулями, но также создать символическую ссылку с именем foo (Не foo.py) в prefix/bin/, которая указывает на foo.py.

Как можно сказать distutils, чтобы сделать это?

1 2

1 ответ:

Это можно сделать, если использовать setuptools entry_points. Вот пример:

Foo.py

def main():
    print "Hello world"

Setup.py

from setuptools import setup

setup(
    name="foo",
    version = "0.1",
    py_modules=['foo'],
    entry_points = {
        'console_scripts': ['foo = foo:main']
    }
)

Пример использования, после установки модуля с помощью инструмента, такого как pip:

$ foo
Hello world
$ python -c 'import foo; foo.main()'
Hello world