首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PIP/Python是否支持同一包的多个版本?

PIP/Python是否支持同一包的多个版本?
EN

Stack Overflow用户
提问于 2018-01-18 23:39:06
回答 1查看 6K关注 0票数 5

假设我有一个包foofoo打包了我在多个Python脚本中使用的二进制共享对象。

  • Foo v1 (共享对象)
    • Bar v1 (需要Foo v1)
    • Baz v1 (需要Foo v1)

现在,我想推出一个新的突破更新到Foo。

  • Foo v2 (共享对象)
    • Bar v2 (需要Foo v2)

  • Foo v1 (共享对象)
    • Bar v1 (需要Foo v1)
    • Baz v1 (需要Foo v1)

semvar中具有不同主要版本的旧依赖项可以在PyPI上分发吗?如果是这样的话,是怎么做的?

EN

回答 1

Stack Overflow用户

发布于 2018-01-19 17:12:39

Pypi可以并将跟踪同一包的多个版本,而不会出现问题。在安装带有pip的包时,还可以显式引用包的特定版本。

但是,给定环境(或虚拟环境)只能携带给定包的单个版本。如果您要求pip将栏更新为V2,那么FOO也将被更新,FOO V1将被替换。

要在同一台计算机上同时使用FOO V1和FOO V2进行开发,您必须使用virtualenv并创建一个单独的虚拟环境,每个版本的FOO将驻留在其中而不受干扰。每个网站都有自己的站点--每个包都包含一个特定版本的包。

Virtualenv将使用主安装作为模型创建python的备用“安装”。然后,您可以切换到virtualenv,并在其中安装您想要的任何包,它们将保留在这个特定的环境中。

停用将使您返回到全球环境。

创建第二个环境,并在其中安装一组不同的包。

然后,通过从每个环境运行激活脚本,您可以轻松地从一个切换到另一个(取决于您的平台,实际脚本可能略有不同,在windows下,如果您喜欢使用powershell,则在env-root/ script /activate.bat或activate.ps1中)。

安装虚拟主机

代码语言:javascript
复制
pip install virtualenv

在当前文件夹中创建环境FIZ

代码语言:javascript
复制
virtualenv FIZ

激活此环境(假设windows普通外壳)

代码语言:javascript
复制
FIZ\Scripts\activate.bat

您将看到您的提示更改,添加FIZ,说明您在此环境中。您安装的任何东西都将仅限于FIZ环境,并且只在激活后才可用。

代码语言:javascript
复制
pip install click

例如,将在最新版本中安装单击(帮助创建命令行接口的库)。

代码语言:javascript
复制
pip install click==6.1

将删除任何版本的单击,并以版本6.1替换

使环境失活

代码语言:javascript
复制
deactivate

创建第二个环境FUZ

代码语言:javascript
复制
virtualenv FUZ

激活此环境将允许您安装与FIZ中存在的不同版本的click (或任何其他版本),这两者都将在您的计算机上同时存在,但在任何特定时间只能使用一个。尽管从技术上讲,您可以打开两个shell窗口,同时激活两个环境。

希望这能帮上忙!

这里有一些关于这个问题的补充读物

最后,我热情地推荐了Hitchhiker蟒蛇指南,它帮助我加快了速度。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48332046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档