Python 使用自定义选项运行setuptools安装命令时发生RuntimeError

Python 使用自定义选项运行setuptools安装命令时发生RuntimeError,python,setuptools,Python,Setuptools,我在setup.py中使用了一个自定义安装选项,将setuptools.Command子类化,但在调用父运行函数时会引发异常。这是setup.py代码 from setuptools import setup from setuptools import Command import os, json, sys class vboxcustom(Command): user_options = [ ("disk-path=", "d", "Location wh

我在setup.py中使用了一个自定义安装选项,将setuptools.Command子类化,但在调用父运行函数时会引发异常。这是setup.py代码

from setuptools import setup
from setuptools import Command
import os, json, sys

class vboxcustom(Command):
    user_options = [
            ("disk-path=", "d", "Location where vbox disk files will be stored."),
            ]

    def initialize_options(self):
        self.disk_path = None

    def finalize_options(self):
        if self.disk_path is None:
            self.disk_path = os.path.expanduser("~/vbox")

    def run(self):
        settings_file = os.path.expanduser("~/.vbox")

        settings = {"disk_path": self.disk_path}

        f = open(settings_file, 'w')
        f.write(json.dumps(settings))

        super(vboxcustom, self).run()

setup(
        name="vbox",
        version="1.0",
        author="Ravi",
        author_email="email@email",
        python_requires=">=3",
        install_requires=["dnspython"],
        packages=["vboxhelper"],
        scripts=["scripts/vbox"],
        cmdclass={
            "install": vboxcustom,
            }
        )
引发的异常如下:
运行时错误:抽象方法--子类必须重写
。似乎我必须重写一个方法,但是什么方法(我只是猜测,错误非常不具体)

堆栈跟踪是:

Traceback (most recent call last):
  File "setup.py", line 37, in <module>
    "install": vboxcustom,
  File "/home/ravi/work/virenvs/testvbox/lib/python3.6/site-packages/setuptools/__init__.py", line 129, in setup
    return distutils.core.setup(**attrs)
  File "/usr/lib/python3.6/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/usr/lib/python3.6/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "setup.py", line 25, in run
    super(vboxcustom, self).run()
  File "/usr/lib/python3.6/distutils/cmd.py", line 176, in run
    % self.__class__)
RuntimeError: abstract method -- subclass <class '__main__.vboxcustom'> must override

您需要保留类
安装中的
用户选项

class vboxcustom(install):
    user_options = install.user_options + [
        ("disk-path=", "d", "Location where vbox disk files will be stored."),
    ]

@拉维:这有帮助吗?是的,这就是错误的原因。我现在陷入了一个完全不同的错误,正在研究它。修复!还必须调用父级初始化\u选项和最终确定\u选项
class vboxcustom(install):
    user_options = install.user_options + [
        ("disk-path=", "d", "Location where vbox disk files will be stored."),
    ]