当前位置: 首页 > 面试题库 >

列出Python中的依赖项

潘坚白
2023-03-14
问题内容

列出将工作项目部署到其他地方(例如,在不同的OS上)所需的所有依赖项的最有效方法是什么?

Python 2.7,Windows开发环境,不是每个项目都使用virtualenv,而是全局开发环境,根据需要安装库,可以从一个项目跳到下一个项目。

我跟踪了必须为给定项目html" target="_blank">安装的大多数(不确定 所有 )库。我 没有 跟踪与它们一起自动安装的任何子依赖项。这样做pip freeze同时列出,以及所有曾经被安装的其他库。

有没有一种方法可以列出您需要安装的项目,而不要多多少少,以部署该项目?

编辑
鉴于以下答案,需要一些澄清。我的项目由一堆模块(我写过)组成,每个模块都有一堆imports。我是否应该将所有模块中的所有导入内容复制粘贴到一个文件中,进行排序以消除重复项,然后将所有内容从标准库中丢弃(我怎么知道它们是)?或者,还有更好的方法?这就是问题所在。


问题答案:

扫描您的import陈述。您仅可能导入您明确想要导入的东西,而不是依赖项。

像这样列出一个清单pip freeze,然后创建并激活virtualenv。

这样做pip install -r your_list,然后尝试在该virtualenv中运行您的代码。注意所有ImportError异常,将它们与软件包匹配,然后添加到列表中。重复执行直到代码运行没有问题。

现在,您可以pip install在部署站点上找到列表。

这是非常手动的操作,但是不需要任何外部工具,并且会迫使您确保代码可以运行。(将测试套件作为检查来运行是很好的,但还不够。)



 类似资料:
  • 问题内容: 有没有一种工具可以列出包含JAR中引用的(第三方)类的第三方“软件包”?假设它将从JAR文件定义中识别出什么是“ home”包,并且它将打印出JAR中引用的最高3级的第三方类的标准名称的列表。 目的是我需要找到该JAR文件的Maven依赖项并将其部署为Maven工件。 问题答案: JarAnalyzer: jar文件的依赖项管理实用程序。它的主要目的是遍历目录,解析该目录中的每个jar

  • 问题内容: 我有两个文件和,分别定义了两个类和。 直到今天,用于引用该对象的定义,因此我已经做了 在文件中。 但是,到目前为止,我已经为引用该对象的对象创建了一个新方法。 尝试导入时遇到了问题:我尝试了一下,当程序运行并调用了using的方法时,出现了一个未定义的异常。 我该怎么办? 问题答案: 导入Python模块 是一篇很棒的文章,介绍了Python中的循环导入。 解决此问题的最简单方法是将路

  • 问题内容: 我已经搜索了很多,但是我发现的主要是python中的递归编程示例。因此,问题来了: 我该如何实现? 问题答案: 一切在Python中都是动态的-甚至是类声明。在初始声明之后,没有什么可以阻止您修改类的内容的: 注意:如果您不太熟悉Python,则该关键字仅允许您说“这里什么都没有”-除非A类的空值与本例中的一样空,否则它并不重要!

  • 问题内容: 如何使用pip列出软件包的依赖关系? 问题答案: 请注意,2012年的答案已经过时。首先,解决方法(答案已经表明您可能在2012年不应该这样做),现在您 不能 这样做。如果您想使用类似的解决方法,则可以使用,但是您所需要的可能性甚至更低。特别是由于已得到改进。幸运的是,该问题已被标记为后面一个问题的重复,因此,除了出于历史目的之外,没有理由阅读此答案。 您不能,至少不能直接。 您可以使

  • 问题内容: 如果我在应用程序根目录中定义了package.json文件并运行,它将自动安装package.json中定义的所有依赖项。 但是,这似乎并非相反。 如果我在应用程序根目录中执行此操作,则会引发错误,使我无法通过它传递程序包名称。 这还不应该卸载与我安装的相同的软件包吗? 难道我做错了什么? 问题答案: 如果使用Bash,只需切换到包含package.json文件的文件夹,然后运行以下命

  • 我正在使用Gradle构建系统开发一个IntelliJ插件。这个插件使用一个公共模型,它是一个maven项目。 我已经将mavenLocal包含在我的gradle存储库中,并且还在“dependencies”中添加了编译时依赖项。 代码编译得很好,但我在运行时得到了java.lang.NoClassDefoundError。当我检查gradle中的依赖项时,它并没有列出本地maven jar(模型