创建一个安装python模块并运行一些命令的python脚本

2024-09-28 23:18:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在这个库https://github.com/jupyter-incubator/sparkmagic#installation周围创建一个薄型包装器

正如您在链接中看到的,安装步骤需要

  1. 用pip安装一些软件包
  2. 运行jupyter enable ...jupyter-kernelspec install类型的命令
  3. 要生成并放置在正确位置的自定义配置文件

我正在检查哪些选项可以使安装像调用脚本一样自动。到目前为止,这些命令都是由bash编写的。以这种方式,它可以处理一个简单的install.sh,但是我可能会遇到问题,因为我不知道要使用哪个python二进制文件。如果用户想为python2或python3安装lib,除非他接触到脚本,否则他不能有这个选择。在

然后我尝试使用setup.py并重写cmdclass来插入自定义代码

from setuptools import setup
from setuptools.command.develop import develop
from setuptools.command.install import install


class PostDevelopCommand(develop):
  """Post-installation for development mode."""
  def run(self):
    develop.run(self)
    print("do things")

class PostInstallCommand(install):
  """Post-installation for installation mode."""
  def run(self):
    install.run(self)
    print("do things")

setup(
  ...
  install_requires=['sparkmagic'],
  cmdclass={
    'develop': PostDevelopCommand,
    'install': PostInstallCommand,
},

...
)

但是自定义打印只在运行python setup.py install时起作用,而对pip install不起作用

我想让这最后一个选择有效,但如果这不是做这种事情的正确模式,你能建议我走哪条路吗?在


Tags: installpiprunfrompyimport命令self
1条回答
网友
1楼 · 发布于 2024-09-28 23:18:36

问题不是直接与pip install有关,而是与车轮有关。打包为wheel的项目不能具有自定义安装步骤。例如,请参见discussion。由于pip喜欢使用控制盘,如果需要,可以在本地构建它们,因此在安装时不会运行自定义步骤。不过,可能有一些方法可以防止车轮踏步。在

知道了这一点,你也许应该听从Jan Vlcinsky在评论中的建议,来回答这个问题:Post install script after installing a wheel。在

  • {{a3>添加你的项目。也许你更喜欢使用distutils ^{} feature

  • 指示包的用户在安装包(pip install myproject && myprojectconfigure)后立即运行它。

  • 最后考虑提供myprojectconfigure uninstall

相关问题 更多 >