Добавление пользовательского класса команд для установки в setup.py больше не копирует файлы данных
Я создал пакет python с методом установки из setuptools, и он работал безупречно.
У меня было это, и это работало отлично:
setup(
name='whatever',
version='1.0.0',
packages=find_packages(),
license='MIT',
author='Sheldan',
install_requires=['psutil',
'itsdangerous',
'flask',
'python-crontab',
'enum34',
'requests',
'kitchen',
'python-dateutil',
'flask-login'],
include_package_data=True,
data_files=get_data_from_folder('logs') + get_data_from_folder('resources')
)
Затем мне нужно было выполнить некоторые шаги после установки. После некоторого исследования, кажется, мне пришлось отменить команду, которая выполняется. Итак, я добавил cmdclass={'install': install}
к настройке сверху и добавил класс с именем install, который выглядит следующим образом:
class install(_install):
def run(self):
_install.run(self)
self.execute(_post_install, (self,),
msg="Running post install task")
_post_install
это просто метод, который выполняет шаги после установки.
Но по какой-то причине после того, как я добавил команду, файлы, которые должны быть скопированы через data_files, теперь больше копируются, и я увидел, что целевой путь больше не 'yt_crawler-1.0.0-py.2.7-egg'
, но просто 'yt_crawler'
После некоторых исследований кажется, что 'bdist_egg'
Команда не выполнена.
1 ответ
Я исправил это, вызвав self.do_egg_install() вместо _install.run(self).