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

在代码中升级python模块

钱德元
2023-03-14

我的问题与这个问题有关:在代码中安装python模块,但涉及升级模块。

我试过了

packages=['apscheduler','beautifulsoup4','gdata']

def upgrade(packages):
    for package in packages:
        pip.main(['install --upgrade', package])

def upgrade(packages):
    for package in packages:
        pip.main(['install', package + ' --upgrade'])

共有3个答案

丁弘新
2023-03-14

我现在这是一个老线程,但我已经遇到了很多次,我想我应该给另一个解决方案,因为我已经使用了这个。对我来说,这更方便用户。

import pip
from subprocess import call

packages=['apscheduler','beautifulsoup4','gdata']

def upgrade(packages):
    for package in packages:
        call("pip install --upgrade " + package, shell=True)

在subprocess post中阅读了“shell=True”的以下实际含义后,似乎不需要shell=True命令,而且可能不是最好的主意<不需要代码>导入pip,因为我不调用pip。main如前面的一些答案所示。

因此,新代码可以是:from subprocess import call

packages=['apscheduler','beautifulsoup4','gdata']

def upgrade(packages):
    for package in packages:
        call("pip install --upgrade " + package)

至于其他答案,我更喜欢传递特定的字符串和循环。使用这两种方法都不会获得性能命中或增益。

连乐
2023-03-14

布伦巴恩的答案与OP的代码风格相匹配,但理查德·惠特利的答案更接近我的代码。

不过,理查德的回答有几个问题我想解决,我不想编辑他的,因为差异相当大。

from subprocess import call

my_packages = ['apscheduler', 'beautifulsoup4', 'gdata']

def upgrade(package_list):
    call(['pip', 'install', '--upgrade'] + package_list)

笔记

  • 无需导入pip模块(subprocess调用路径中找到的pip二进制文件)
管峻
2023-03-14

试试pip。main(['install','--upgrade',package])

“--upgrade”是一个单独的命令行参数,因此需要将其单独传递给main

 类似资料:
  • 我需要在我的脚本中直接安装PyPi的包。也许有一些模块或(,等)功能允许我只执行类似的操作,请求将被安装到我的virtualenv中。

  • 我的项目需要能够同时安装 2 个或更多版本。据我所知,我找到的解决方案是更改安装程序每个版本的升级代码。 但是我想自动这样做。在常规GUID中,我只是使用“*”,但这不适用于升级解码。是否有一种方法可以在每个wix预构建或任何其他解决方案中生成新的升级解码?

  • 我已经用flutter在play store上发布了一个应用程序,现在我想上传一个新版本的应用程序。我正在尝试使用以下命令更改版本代码: flutter build apk--Build-Name=1.0.2--Build-Number=3 或者像这样更改local.properties

  • 我被迫在Windows10上开发python脚本,这是我以前从未做过的。我已使用windows installer软件包将python 3.9安装到C:\Program Files\python目录中。这个目录是针对普通用户的写保护的,我不想提升到admin,所以当全局使用pip时,我使用--user switch和python将模块安装到C:\Users 当我尝试使用虚拟环境并升级pip时,问题

  • 现在需要将oracle驱动程序版本升级到19。要实现这一点,我们只需用版本19升级pom.xml中所需的oracle驱动程序依赖项即可。然后应用程序是否会使用Oracle19驱动程序,因为它将被指定为application.xml中的一个模块,放在EAR的META-INF中?由于数据源引用oracle模块,我们是否也应该用正确的JAR版本更新module.xml(在com/oracle/main下

  • 问题内容: python 2.7.3附带了一个sqlite3库,但它不是最新版本。 我想在virtualenv环境中进行升级。换句话说,升级仅适用于在virtualenv中安装的python版本。 正确的方法是什么? 问题答案: 以下内容对我有用,但是如果有任何改进的地方,请发表评论: 激活要安装最新版本的virtualenv 从Google代码获取最新的软件包来源: 从源代码编译,并与 最新的

  • 问题内容: 我在一个LAB工作站上安装了Python 2.7.11。我想将Python至少升级到3.5。 我该怎么办?我是否应该完全卸载2.7.11而不是安装新的2.7.11?有没有办法更新它?更新是个好主意吗? 问题答案: Python的每个次要版本(即3.x和2.x版本)都将与计算机上的其他版本并排安装。仅补丁程序版本将升级现有安装。 因此,如果您想保留已安装的Python 2.7,请放任它并

  • 问题内容: 我需要为MS-Access 2000编写一个SQL查询,以便在存在行的情况下进行更新,但在不存在的情况下进行插入。(我相信这被称为“ upsert”) IE 如果行存在… 如果不存在… 可以在一个查询中完成吗? 问题答案: 通常,我通常先运行insert语句,然后检查是否发生错误3022,这表明该行已存在。所以像这样: Edit1: 我想提一下,我在这里发布的内容是一个非常常见的解决方