Я хотел бы иметь возможность добавить хук в мой setup.py, который будет запускаться после установки (либо при установке easy_install, либо при установке python setup.py).
В моем проекте PySmell есть несколько файлов поддержки для Vim и Emacs. Когда пользователь устанавливает PySmell обычным способом, эти файлы копируются в настоящее яйцо, и пользователь должен извлечь их и поместить в свои каталоги .vim или .emacs. Я хочу либо спросить пользователя, после установки, куда бы он хотел скопировать эти файлы, либо даже просто сообщение с указанием местоположения файлов и что ему делать с ними.
Как лучше всего это сделать?
Спасибо
Мой setup.py выглядит так:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from setuptools import setup
version = __import__('pysmell.pysmell').pysmell.__version__
setup(
name='pysmell',
version = version,
description = 'An autocompletion library for Python',
author = 'Orestis Markou',
author_email = '[email protected]',
packages = ['pysmell'],
entry_points = {
'console_scripts': [ 'pysmell = pysmell.pysmell:main' ]
},
data_files = [
('vim', ['pysmell.vim']),
('emacs', ['pysmell.el']),
],
include_package_data = True,
keywords = 'vim autocomplete',
url = 'http://code.google.com/p/pysmell',
long_description =
"""\
PySmell is a python IDE completion helper.
It tries to statically analyze Python source code, without executing it,
and generates information about a project's structure that IDE tools can
use.
The first target is Vim, because that's what I'm using and because its
completion mechanism is very straightforward, but it's not limited to it.
""",
classifiers = [
'Development Status :: 5 - Production/Stable',
'Environment :: Console',
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Topic :: Software Development',
'Topic :: Utilities',
'Topic :: Text Editors',
]
)
РЕДАКТИРОВАТЬ:
Вот заглушка, которая демонстрирует python setup.py install
:
from setuptools.command.install import install as _install
class install(_install):
def run(self):
_install.run(self)
print post_install_message
setup(
cmdclass={'install': install},
...
Пока не повезло с маршрутом easy_install.
setuptools.install.install:run()
не разрешает аргумент настройкиinstall_requires
, и кажется, что когда вы это делаете, он работает по-другому. - person astronaut   schedule 22.09.2013do_egg_install
, как описано здесь: stackoverflow.com/questions/21915469/ - person Ioannis Filippidis   schedule 27.03.2015