跨虚拟环境使用不同版本的相同库

2023-11-21

我正在开发一个 python 项目,该项目在多个模块中具有依赖关系。

举个例子说我的主模块使用另外 2 个模块,即module_1需要图书馆lib_version_1.5 and module_2它使用相同的Library_but_version_1.8 .

module_1 和 module_2 都运行良好,现在我正在创建另一个结合这两个模块的模块。

那么我如何使用虚拟环境,以便将这两者与所有必需的库(不同版本)结合起来?是否可以在具有不同子模块的项目中安装同一库的不同版本?


请注意,python 命名空间非常强大。希望这个小例子能对您有所帮助。

基本理论是,将不同版本的相同库添加到Python的类路径中,并使它们具有不同的名称,这样就不会发生覆盖。

import os, sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'libs'))

上面的代码将在项目基目录下的“libs”目录下插入第三方库。

假设我需要 2.4.1 和 2.6.1 版本的 pycrypto,使用pip install pycrypto==2.6.1 -t ./libs and ip install pycrypto==2.4.1 -t ./libs将两个版本安装到项目下的子目录中。安装后修改它们的名称,否则它将覆盖现有的。

Modify their names to Crypto241 and Crypto261 seprately. What my project looks like

假设我有两个模块(ModuleWIthCrypto241, ModuleWithCrypto261)这将分别导入 pycrypto 2.4.1 和 2.6.1。

ModuleWithCrypto261 代码:

def getCryproVersion(baseDir):
    import os, sys
    sys.path.insert(0, os.path.join(baseDir, 'libs'))
    import Crypto261
    return Crypto261.__version__

ModuleWIthCrypto241 代码:

def getCryproVersion(baseDir):
    import os, sys
    sys.path.insert(0, os.path.join(baseDir, 'libs'))
    import Crypto241
    return Crypto241.__version__

几乎一样,只是导入不同版本的pycrypto。

然后我们有另一个脚本尝试获取两个不同版本的 pycrypto。modulewithdiffversion.py

它看起来像什么:

import os, sys

from com.x import ModuleWIthCrypto241
from com.x import ModuleWithCrypto261
if __name__ == '__main__':
    baseDir = os.path.dirname(os.path.abspath(__file__))
    print ModuleWIthCrypto241.getCryproVersion(baseDir)
    print ModuleWithCrypto261.getCryproVersion(baseDir)

执行main方法,它会打印出pycrypto的两个版本:

2.4.1
2.6.1

希望对你有帮助!

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

跨虚拟环境使用不同版本的相同库 的相关文章

  • 如何在 Python 中使用 .format() 打印“for”循环中的列表?

    我是 Python 新手 我正在编写一段非常简单的代码 使用 for 循环打印列表的内容 format 我想要如下的输出 但我收到此错误 names David Peter Michael John Bob for i in names p
  • 有没有办法使用纯Python释放纯函数的GIL?

    我想我一定错过了什么 这看起来很正确 但我看不出有什么办法可以做到这一点 假设你有一个 Python 纯函数 from math import sin cos def f t x 16 sin t 3 y 13 cos t 5 cos 2
  • 不能在jinja2宏中使用current_user?

    我使用 Flask Login 它提供了current user模板中的对象 我想编写一个宏来显示评论表单或登录链接 具体取决于用户是否登录 如果我直接在模板中使用此代码 它会起作用 if current user is authentic
  • AttributeError:模块“tensorflow.python.framework.ops”没有属性“RegisterShape”

    我正在使用 TensorFlow 2 1 0 dev20191125 不幸的是 我无法编译一个带有错误的简单示例 AttributeError 模块 tensorflow python framework ops 没有 属性 Registe
  • 使用 for 循环 Python 为数组赋值

    我正在尝试将字符串的值分配给不同的数组索引 但我收到一个名为 列表分配超出范围 的错误 uuidVal distVal uuidArray distArray for i in range len returnedList for beac
  • 使用解析将 ** 运算符更改为幂函数?

    我的要求是将 运算符更改为幂函数 例如 1 Input B 2 Output power B 2 2 B 2 T 2 X Output power B 2 我写了下面的正则表达式来解决这个问题 rx r a zA Z0 9 a zA Z0
  • 代码 zip( *sorted( zip(units, error) ) ) 的作用是什么?

    对于我的申请units and errors始终是数值列表 我尝试用谷歌搜索每个部分的作用 并找出了 zip 的第一部分 它似乎 ziped list zip units errors 只需将单位和误差配对即可生成一个列表 如下所示 uni
  • 尽管 ioff() 和 matplotlib.use('Agg'),Pyplot“无法连接到 X 服务器 localhost:10.0”

    我有一段代码 它被不同的函数调用 为我执行一些计算 然后将输出绘制到文件中 鉴于整个脚本可能需要一段时间才能运行更大的数据集 并且由于我可能想在给定时间分析多个数据集 所以我开始它screen然后断开连接并关闭我的腻子会话 并在第二天再检查
  • 预处理 csv 文件以与 tflearn 一起使用

    我的问题是关于在将 csv 文件输入神经网络之前对其进行预处理 我想使用 python 3 中的 tflearn 为著名的 iris 数据集构建一个深度神经网络 数据集 http archive ics uci edu ml machine
  • Python控制台默认十六进制显示

    我在 Python 控制台中做了很多工作 其中大部分都涉及地址 我更喜欢以十六进制形式查看地址 So if a 0xBADF00D 当我简单地输入Python gt a进入控制台查看其值 我更喜欢 python 回复0xBADF00D代替1
  • 自定义信号的声明

    在 Qt 中 我们可以通过将自定义信号设为静态变量来创建它们 然后我们使用self signame反而classname signame 这样就在类中创建了一个实例变量 我想了解这种模式之外的理论 这是我尝试过的一些伪代码 这些伪代码已记录
  • Pythoncom - 将相同的 COM 对象传递给多个线程

    你好 对于 COM 对象 我是一个完全的初学者 非常感谢任何帮助 我正在开发一个Python程序 该程序应该以客户端 服务器的方式读取传入的MS Word文档 即客户端发送一个请求 一个或多个MS Word文档 服务器使用pythoncom
  • 使用 Twisted Python 的 UDP 客户端和服务器

    我想创建一个服务器和客户端 使用 Twisted 从网络发送和接收 UDP 数据包 我已经用 Python 中的套接字编写了此代码 但想利用 Twisted 的回调和线程功能 然而 我需要 Twisted 设计方面的帮助 我想接收多种类型的
  • 替换 pandas 数据框中的点

    我有一个如图所示的数据框 数字实际上是对象 正在做df treasury rate pd to numeric df treasury rate 可预见的炸弹 然而 做df replace np nan 似乎没有摆脱这个点 所以我很困惑 有
  • pip-tools 的干净设置不会编译非常基本的 pyproject.toml

    使用全新的pip tools设置总是会导致Backend subprocess exited error pyproject toml project dependencies openpyxl gt 3 0 9 lt 4 在仅包含上述 p
  • 在 Django 中翻译文件时的 Git 命令

    我在 Django 中有一个现有的应用程序 我想在页面上添加翻译 在页面上我有 trans Projects 在 po 文件中我添加了 templates staff site html 200 msgid Projects msgid P
  • Python写入dbf数据时出错

    我得到这个错误 DbfError unable to modify fields individually except in with or Process 如何修复它 这是我的code with dbf Table aa dbf as
  • Flask APScheduler + Gunicorn 工作人员 - 在套接字修复后仍在运行任务两次

    我有一个 Flask 应用程序 我使用 Flask APScheduler 在我的数据库上运行计划查询并通过 cron 作业发送电子邮件 我通过 Gunicorn 使用以下配置运行我的应用程序并通过主管进行控制 program myapp
  • 使用 Tweepy 获取推文时出错

    我有一个用于获取推文的 Python 脚本 在脚本中我使用该库 Tweepy 我使用有效的身份验证参数 运行此脚本后 一些推文存储在我的 MongoDB 中 有些则被 if 语句拒绝 但我仍然收到错误 requests packages u
  • Pymongo 批量插入

    我正在尝试批量插入文档 但批量插入时不会插入超过 84 个文档 给我这个错误 in insert pymongo errors InvalidOperation cannot do an empty bulk insert 是否可以批量插入

随机推荐

  • robots.txt 的正则表达式

    我正在尝试设置 robots txt 但我不确定正则表达式 我有四个不同的页面 全部以三种不同的语言提供 我想我可以使用正则表达式 而不是列出每个页面乘以 3 nav aspx page aspx changelang 可能附加一个查询字符
  • Android:检测 USB

    有什么方法可以 以编程方式 在您的活动 应用程序中知道用户已通过 USB 将您的手机连接到 PC 有些人建议使用UMS CONNECTED从最新版本的 Android 开始已弃用 另一个问题是它不适用于支持 MTP 的设备 其他人建议使用B
  • 错误消息“您无法登录此应用程序,因为它不符合 Google 的 OAuth 2.0 政策以确保应用程序安全”

    我正在开发一个基于网络的应用程序 它允许我信任的员工编辑我的 YouTube 频道的标题 描述 标签等 在尝试 选择加入 我自己的应用程序时 我被发送到回调 URI 并附带一条错误消息 您无法登录此应用 因为它不符合 Google 保护应用
  • C++ 中使用向下取整、向上取整和向外舍入模式进行整数除法

    最近 我看到这个问题它询问如何将整数除以ceil舍入 朝正无穷大 不幸的是 答案要么不适用于有符号整数 要么存在下溢和溢出问题 例如 接受的答案有这个解决方案 q 1 x 1 y When x为零 则存在下溢 0结果是不正确的 你如何实施c
  • Google 地理编码 v2 API 突然停止工作

    地理编码 v2 API 意外停止 e g 我无法从 API 获取经纬度 服务器的输出是 Status code 610 request geocode 我搜索了status 610但找不到任何相关信息 Thanks 服务已停止 今天是 3
  • IIS 中的匿名访问和 NTLM 身份验证

    我有一台使用 IIS 设置的服务器 并且我的站点有一些允许匿名访问的页面和一些需要 集成 Windows 身份验证 的页面 在 IIS 的 身份验证方法 屏幕上 您似乎可以同时启用 集成 Windows 身份验证 和匿名访问 但我读过的文档
  • Fieldset:中心图例

    正如之前多次询问的那样 但从未真正回答过 我想将图例放在字段集中 这个技巧在这里完美完成 我也为我的项目购买了它 http themeforest net item aloma liquid mobile template full scr
  • 使用 PostgreSQL 和 REF_CURSOR 的 JPA 2.1 StoredProcedureQuery

    我在 PostgreSQL 数据库中创建了一个函数 我想使用 JPA 2 1 的 StoredProcedureQuery 方法调用该函数 这是我的 PostgreSQL 查询 CREATE OR REPLACE FUNCTION get
  • 如何重命名路径以响应填充

    我有一个这样的查询 galleryModel find id galleryId populate model User path objectId select firstName lastName 结束响应objectId会是这样的 o
  • C++ 约束应该急切地评估还是惰性地评估?

    这个问题的主要目的是引起社区对 libstdc 范围不适用于 clang 的关注 https bugs llvm org show bug cgi id 46746 Avi Kivity 认为这是一个 gcc 错误 https gcc gn
  • 如何在 Scala 中定义保留前导标记的三元运算符?

    我正在编写一个生成 Scala 输出的代码生成器 我需要以这样的方式模拟三元运算符 即导致 的标记保持不变 例如转换表达式c p q to c something 简单的if c p else q不符合我的标准 因为它需要if before
  • jQuery.data 不再适用于窗口?

    我最近升级了我们项目的 jQuery 文件1 4 2 to 1 4 4看来截至1 4 3我们一直在使用的方式jQuery data已停止工作 我们有这样的代码 var events window data events if events
  • 命名空间/解决方案结构

    我很抱歉问了这样一个笼统的问题 但这对我来说可能是一个挑战 我的团队即将开始一个大型项目 该项目有望将多年来不断发展的所有随机一次性代码库整合在一起 鉴于该项目将涵盖整个公司的标准化逻辑实体 客户 员工 小任务 控制小任务的大任务以及公用事
  • AutoMapper 映射中的 foreach 中的额外迭代

    由于某种原因 我在 AutoMapper 地图定义中使用的循环迭代次数超出了应有的次数 地图定义 Mapper CreateMap
  • 如何使JScrollPane(在BorderLayout中,包含JPanel)平滑自动滚动

    我试图在 JScrollPanel 内有一个不同大小的 JPanel 可能比标准屏幕宽得多 目前效果很好 我已经将滚动条配置为手动正常工作 但是我希望 JPanel 不断向左 滚动 以便随着时间的推移显示整个内容 我找到的所有答案都特定于
  • vim 无法将 映射到 :tab next

    我的 vimrc 中有以下映射 map
  • 防止 LaunchedEffect 在配置更改时重新运行

    我只想在加载可组合项时运行代码一次 因此 我使用 LaunchedEffect 并将 key 设置为 true 来实现此目的 LaunchedEffect true do API call 该代码工作正常 但每当有任何配置更改 例如屏幕旋转
  • 从专业化自我的类别继承?

    这是有效的 C 吗 template
  • 如何使用 Python 检索给定用户的所有推文和属性?

    我正在尝试从 Twitter 检索数据 使用 Tweepy 作为在命令行输入的用户名 我想提取大量有关状态和用户的数据 因此提出了以下内容 请注意 我正在导入所有必需的模块 并且具有 oauth 键 只是未包含在此处 并且文件名是正确的 只
  • 跨虚拟环境使用不同版本的相同库

    我正在开发一个 python 项目 该项目在多个模块中具有依赖关系 举个例子说我的主模块使用另外 2 个模块 即module 1需要图书馆lib version 1 5 and module 2它使用相同的Library but versi