运行自定义任务时调用`PIP install`运行自定义任务时调用`PIP install`(Run

2019-05-12 02:15发布

我想我的Python包“点子安装”。 问题是,包装具有必须在用户的初始化shell脚本来源(如shell脚本.bashrc )。

但安装后,用户不知道究竟该脚本去(大概/usr/bin ,但我们不能garantee)。 当然,用户可以运行which myscript.sh和手动编辑自己的init脚本。

但我想这个步骤自动化。 我可以创建一个新的distutils命令,但pip install不调用它。 我可以延长distutils.command.install.install ,而是通过PIP安装中断(尽管通过作品python setup.py install ):

setup.py

from distutils.command.install import install

class CustomInstall(install):
def run(self):
    install.run(self)
    # custom stuff here
    do_my_stuff()

setup(..., cmdclass={'install': CustomInstall})

贝壳

$ pip install dist/mypackage.tar.gz
Unpacking ./dist/mypackage.tar.gz
  Running setup.py egg_info for package from file:///path/to/mypackage/dist/mypackage.tar.gz

Installing collected packages: mypackage
  Running setup.py install for mypackage
    usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
       or: -c --help [cmd1 cmd2 ...]
       or: -c --help-commands
       or: -c cmd --help

    error: option --single-version-externally-managed not recognized
    Complete output from command /path/to/.virtualenvs/myvirtualenv/bin/python -c "import setuptools;__file__='/tmp/pip-OFjrqU-build/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-s4Yo4d-record/install-record.txt --single-version-externally-managed --install-headers /path/to/.virtualenvs/myvirtualenv/include/site/python2.7:
    usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
       or: -c --help [cmd1 cmd2 ...]
       or: -c --help-commands
       or: -c cmd --help

error: option --single-version-externally-managed not recognized

----------------------------------------
Command /path/to/.virtualenvs/myvirtualenv/bin/python -c "import setuptools;__file__='/tmp/pip-OFjrqU-build/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-s4Yo4d-record/install-record.txt --single-version-externally-managed --install-headers /path/to/.virtualenvs/myvirtualenv/include/site/python2.7 failed with error code 1 in /tmp/pip-OFjrqU-build
Storing complete log in /path/to/myhome/.pip/pip.log

什么是后运行一个自定义任务通过安装程序包的最佳形式给出pip

Answer 1:

难道你尝试from setuptools.command.install import install ,而不是使用distutils



文章来源: Run custom task when call `pip install`