假设我有一个包foo
,而foo
打包了我在多个Python脚本中使用的二进制共享对象。
现在我想向Foo推出一个新的重大更新。
semvar中具有不同主要版本的旧依赖项是否可以通过PyPI分发?如果是这样,怎么样?
答案 0 :(得分:2)
Pypi可以并且将会毫无问题地跟踪同一个包的多个版本。在使用pip安装包时,您还可以显式引用包的特定版本。
但是,给定环境(或虚拟环境)只会携带给定包的单个版本。如果你要求pip将BAR更新为V2,那么FOO也将被更新,FOO V1将被替换。
要在同一台计算机上同时使用FOO V1和FOO V2进行开发,您必须使用virtualenv并创建一个单独的虚拟环境,其中每个版本的FOO将驻留而不会产生干扰。每个都有它自己的站点包,承载每个特定版本的包。
Virtualenv将使用主安装作为模型创建python的备用“安装”。然后,您可以切换到virtualenv并在那里安装所需的任何软件包,它们将保留在这个特定的环境中。
deactivate将返回全局环境。
创建第二个环境并在其中安装一组不同的包。
然后,您可以通过从每个环境运行激活脚本轻松地从一个切换到另一个(取决于您的平台,实际脚本可能略有不同,在Windows下它将在env-root / Scripts / activate.bat或激活.ps1如果你喜欢使用PowerShell工作)
安装virtualenv
pip install virtualenv
在当前文件夹中创建环境FIZ
virtualenv FIZ
激活此环境(假设Windows正常shell)
FIZ\Scripts\activate.bat
你会看到你的提示更改添加FIZ,说明你在这个环境中。 您安装的任何内容都将仅限于该FIZ环境,并且仅在激活后才可用。
pip install click
例如,将以最新版本安装click(用于帮助创建命令行界面的库)。
pip install click==6.1
将删除任何版本的点击并明确替换版本6.1
停用环境
deactivate
创建第二个环境FUZ
virtualenv FUZ
激活此环境将允许您安装与FIZ中显示的不同版本的点击(或其他),并且两者都将在您的计算机上连续生存,但在任何给定时间只能使用一个 。虽然从技术上讲,你可以打开两个shell窗口,同时让两个环境都处于活动状态。
希望这有帮助!
这里有一些关于这个主题的额外阅读
最后我热烈推荐Hitchhiker's guide to python帮助我加快速度。