当前位置: 首页 > 知识库问答 >
问题:

如何定制一个python包而不影响它的依赖性?

卫甫
2023-03-14

我正在使用一个名为networkx的python包。我在这个包中编写了一些自定义函数。只要我不更新这个包,或者不更改conda环境,它就可以正常工作。但我确信这不是正确的做法。我的问题和这个问题很相似,但我用的是康达。

我想知道我可以使用康达来达到类似的结果吗?“开发模式”是什么意思?它只是这个包的文件夹吗?另外,如果我将它安装在我的项目构建器中,依赖于此包的包会发生什么?当我安装其他一些软件包时,它们也会安装此 networkx(例如 omnx)。那么,当我将 networkx 导入为 nx 时,我正在导入哪个网络x?

非常感谢分步指南!

共有1个答案

傅树
2023-03-14

如果您真的必须这样做,一种方法是在加载代码后立即从代码中对模块进行“猴子补丁”。

import networkx as nx

def nx_myfunc():
  print("Monkey in the house!")

nx.myfunc = nx_myfunc

现在模块已经加载,您的函数可以作为nx.myfunc()使用,但是模块安装没有被修改。所以它可以升级等等,但是当然你的猴子补丁可能不适用于新版本。

冒着重复我自己的风险,很少有情况认为这是正确的方法。

 类似资料:
  • 我想知道下面是否可行以及如何实现。 我正在学习Spring boot的教程,其中提到我们可以有一个父依赖项。 然后定义没有版本号的依赖项。 这将在项目依赖项中添加依赖项版本1.5.6。释放sping-boot-starter和sping-boot-starter-web。 就像那样,我想找到什么是<代码> Spring-上下文 spring-jdbc Spring测试 谢谢!

  • Maven允许使用导入范围将依赖项(例如导入Spring Boot依赖项)导入到具有不同父级的项目中。这对插件管理有何影响? 我想使用

  • 我对Gradle和shadow jar(Maven的Shade插件的Gradle版本)是新手。我正在构建一个胖jar,我想在其中合并服务文件(这就是我首先使用shadowjar的原因)。根据文档,shadowJar任务继承自gradle Jar任务。因此,我们可以假设它将完全像jar任务一样工作。 下面是jar任务的片段: 结果,它产生了一个脂肪罐与所有的依赖关系爆炸,什么是预期的。当我将任务名称

  • 让我们看看下面的例子 对这个注释的一些解释说,如果注释的bean被另一个bean引用,那么它将被初始化。但我认为不管有它还是没有它,“带注释的bean如果被另一个bean引用总是会被初始化”,那么它怎么解决循环依赖问题呢? 另一种解释是,如果调用了带注释的bean的方法,它就会被初始化,这听起来很合理,但我尝试了,在我看来,即使没有调用AService中的任何方法,B仍然可以持有对AService

  • 我正在使用Gradle1.0-Milestone-3,不幸的是,我没有特权在短期内升级它。

  • 为了总结我的应用程序片段,我有一个大小是动态的,相对于一个变量的(当这个变量改变时,RecyclView的项目列表分别增长或收缩)。 每行都有几个按钮。每个按钮上都有一个。(单击时,按钮消失)。 问题:当点击一个按钮时,不仅该按钮消失,而且每增加一个7的倍数(按索引)也消失。 例如:按下第1行中的按钮,第8、15和22行中会发生完全相同的事情,即使只单击了第1行。 我目前正在通过片段的方法将侦听器