添加自定义命令类以在setup.py中设置不再复制数据文件

时间:2015-09-21 00:44:06

标签: python setuptools distutils

我使用setuptools中的setup方法创建了一个python包,它运行得很完美。

我有这个并且它完美地运作了:

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' < / p>

经过一些研究后,似乎没有执行'bdist_egg'命令。

1 个答案:

答案 0 :(得分:0)

我通过调用self.do_egg_install()而不是_install.run(self)来修复它。