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

2024-04-17

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

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

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

我正在检查必须使用哪些选项才能使安装像调用脚本一样自动进行。到目前为止,我已经用所有这些命令创建了一个 bash 脚本。通过这种方式,它可以通过一个简单的install.sh但我可能会遇到问题,因为我不知道要使用哪个 python 二进制文件。如果用户想要安装 python2 或 python3 的库,除非他接触脚本,否则他无法进行此选择。

然后我尝试使用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

我想让最后一个选项起作用,但如果这不是做这类事情的正确模式,你能建议我走哪条路吗?


问题不在于pip install直接但与wheels。打包为wheel的项目不能有自定义安装步骤。例如参见这个讨论 https://github.com/pypa/packaging-problems/issues/64. Since pip更喜欢使用轮子,必要时在本地构建它们,您的自定义步骤不会在安装时运行。不过,可能有一些方法可以防止车轮失步。

知道这一点后,您可能应该遵循以下建议扬·维尔钦斯基在他对这个问题的回答的评论中:安装轮子后安装后脚本 https://stackoverflow.com/questions/24263774/post-install-script-after-installing-a-wheel/24749871#comment41929643_24749871.

  • Add a 设置工具 控制台入口点 https://setuptools.readthedocs.io/en/latest/setuptools.html#automatic-script-creation到你的项目(我们称之为myprojectconfigure)。也许您更喜欢使用迪斯图尔斯 script feature https://docs.python.org/3/distutils/setupscript.html#installing-scripts反而。

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

  • 最终考虑提供myprojectconfigure --uninstall以及。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建一个 python 脚本来安装 python 模块并运行一些命令 的相关文章

随机推荐

  • StringBuilder 是否比 String 连接使用更多内存?

    我知道在 C 中使用 StringBuilder 具有明显的性能优势 但是内存差异如何 StringBuilder 使用更多内存吗 顺便说一句 字符串生成器本质上做了什么不同的事情 使其速度如此之快 简短回答 StringBuilder适用
  • c 和 c++ 中将大小数组作为函数参数的目的是什么?

    考虑以下函数 void func1 int unsized array void func2 int sized array 10 void func3 int pointer 根据结果 std cout lt lt std is same
  • 静态方法与非静态方法

    下面是静态方法和非静态方法的php类代码示例 示例1 class A None Static method function foo if isset this echo this is defined echo get class thi
  • ASP.NET GridView:如何编辑和删除数据记录

    嗨 我已经使用 gridview 创建了一个表 有没有办法实现编辑和删除 我以前用PHP做过 我想使用的方法是在表中再创建两列 每行上都有编辑和删除按钮 然后 当单击按钮时 它会通过 URL 传递 id 并能够编辑或删除 不太确定如何在 A
  • 如何使用 Multer 中间件上传图像数组

    我正在尝试使用 Multer 上传一组图像 在客户端 我有一个名为图片的 FormData 图片数组 来自react native image picker const pictures setPictures useState const
  • 将图像添加到 html 块中

    我在 Blocks 内容中添加了一些 html 代码并启用了完整 HTML 过滤器 我对图像使用了相对路径 例如 sites all themes zen zen image png 我想这是不正确的 因为我需要根据我在主页或 node i
  • 使用 Json.NET 将 JSON 转换为数据集

    希望有人可以伸出援手 我正在尝试使用下面的示例将 JSON 转换为数据集 但遇到了问题 我已经验证 JSON 是正确的 使用了 Kent 建议的方法 感谢您的时间和帮助 以下是我的 JSON jsonData item1 one item2
  • Xcode 7 在创建新文件时崩溃

    我有 El Capitan GM 并且我已将 Xcode 更新为 Xcode 7 GM 现在我无法创建新类 Xcode 崩溃并显示消息 UNCAUGHT EXCEPTION NSInvalidArgumentException NSOpen
  • 在nifi中将JSON转换为CSV

    我想在 nifi 中将 JSON 文件转换为 CSV 我们可以用 Python 和其他编程语言来实现这一点 并且有多篇文章介绍它 我有多个 JSON 文件 每个文件都有不同的架构 一个特定文件只有一个架构 我可以看到有一些模板可以将 CSV
  • 项目“ ”的目标位置已存在,无法移动项目

    当我尝试与 git 存储库共享我的项目时 出现这样的异常 项目的目标位置 已存在 无法移动项目 写一个答案是因为我尝试了许多类似问题中建议的许多选项 但没有一个起作用 然后我按照以下有效步骤手动完成了此操作 并且这些步骤适用于任何 Ecli
  • 使用正则表达式查找有效的 IP 地址

    我有以下字符串 text 10 0 0 1 1 but 127 0 0 256 1 1 1 1 我想返回有效的IP地址 所以它应该只返回1 1 1 1自从这里256高于255并且第一个IP编号过多 到目前为止 我有以下内容 但它不适用于0
  • 抽象与抽象类

    根据http www cs cornell edu courses cs211 2006sp Lectures L08 abstraction 08 abstraction html http www cs cornell edu cour
  • 为什么 TableAttribute 位于实体框架 Dll 中?

    Table 属性 可用于将 POCO 类映射到正确的数据库名称 架构 位于 EntityFramework dll 中是否有充分的理由 这是否会阻止您创建一个仅包含您的实体而不依赖于特定数据访问技术的域项目 例如 如果我使用此属性 我不相信
  • CLGeocoder 返回其他国家/地区的位置

    我有以下代码 CLGeocoder geo CLGeocoder alloc init CLRegion region CLRegion alloc initCircularRegionWithCenter CLLocationCoordi
  • 在Sandbox中使用Cocoa NSSavePanel导致断言失败

    我正在尝试使用 NSSavePanel 并将这一行添加到我的代码中 let test NSSavePanel 每次调用此代码时都会出现此错误 我不太确定这里发生了什么 因为我只是创建一个新对象 任何帮助表示赞赏 谢谢 Assertion f
  • 如何在 MVC Core 和 AutoFac 中使用属性注入

    我可以在 MVC Core 中轻松使用构造函数参数注入 但不支持属性注入 我尝试使用 AutoFac 但也失败了 那么如何在MVC Core中使用属性注入 这是 AutoFac 的代码 services AddMvc ContainerBu
  • 使用 Linkify Android 打开 Activity

    我想在用户使用 linkify 单击 textView 时打开 Activity 这是我的代码 Pattern tagMatcher Pattern Compile A Za z0 9 Scheme for Linkify when a w
  • C++ 中的 malloc/free 和 new/delete 兼容性?

    malloc free 和 new delete 有一个很好的比较here https stackoverflow com questions 240212 what is the difference between new delete
  • 致命错误:netinet/in.h:没有这样的文件或目录

    套接字编程 UDP 服务器 我正在尝试使用 UDP 服务器进行消息加密和解密 代码在这里 https www geeksforgeeks org message encryption decryption using udp server
  • 创建一个 python 脚本来安装 python 模块并运行一些命令

    我想围绕这个库创建一个薄包装https github com jupyter incubator sparkmagic installation https github com jupyter incubator sparkmagic i