Eva*_*oll 7 pip packing pypi python-3.x semantic-versioning
假设我有一个 package foo,并将foo我在多个 Python 脚本中使用的二进制共享对象打包起来。
现在我想向 Foo 推出一个新的重大更新。
semvar 中具有不同主要版本的旧依赖项可以通过 PyPI 分发吗?如果是这样,怎么办?
Pypi 可以并且将会跟踪同一包的多个版本,不会出现任何问题。使用 pip 安装软件包时,您还可以显式引用软件包的特定版本。
然而,给定环境(或虚拟环境)将仅携带给定包的单个版本。如果您要求 pip 将 BAR 更新到 V2,那么 FOO 也会更新,并且 FOO V1 将被替换。
要在同一台计算机上同时使用 FOO V1 和 FOO V2 进行开发,您必须使用 virtualenv 并创建一个单独的虚拟环境,每个版本的 FOO 将驻留在其中而不会相互干扰。每个站点都有自己的站点包,其中包含该包的每个特定版本。
Virtualenv 将使用主安装作为模型来创建 python 的替代“安装”。然后,您可以切换到 virtualenv 并安装您想要的任何软件包,它们将保留在这个特定环境中。
停用将使您返回到全局环境。
创建第二个环境并在其中安装一组不同的软件包。
然后,您可以通过从每个环境运行激活脚本轻松地从一个环境切换到另一个环境(根据您的平台,实际脚本可能略有不同,在 Windows 下,它将位于 env-root/Scripts/activate.bat 或 activate.ps1 中,如果您更喜欢使用 powershell 工作)
安装虚拟环境
pip install virtualenv
Run Code Online (Sandbox Code Playgroud)
在当前文件夹中创建环境 FIZ
virtualenv FIZ
Run Code Online (Sandbox Code Playgroud)
激活这个环境(假设windows普通shell)
FIZ\Scripts\activate.bat
Run Code Online (Sandbox Code Playgroud)
您将看到提示更改添加了 FIZ,表明您处于此环境中。您安装的任何内容都将仅限于该 FIZ 环境,并且只有在激活后才可用。
pip install click
Run Code Online (Sandbox Code Playgroud)
例如,将安装最新版本的click(帮助创建命令行界面的库)。
pip install click==6.1
Run Code Online (Sandbox Code Playgroud)
将删除任何版本的 click 并明确替换为版本 6.1
停用环境
deactivate
Run Code Online (Sandbox Code Playgroud)
创建第二个环境 FUZ
virtualenv FUZ
Run Code Online (Sandbox Code Playgroud)
激活此环境将允许您安装与 FIZ 中存在的不同版本的 click(或其他版本),并且两者将同时存在于您的计算机上,但在任何给定时间只能使用一个。尽管从技术上讲,您可以打开两个 shell 窗口,并使两个环境同时处于活动状态。
希望这可以帮助 !
这里有一些关于这个主题的额外阅读
最后,我热烈推荐《Python 漫游指南》,它帮助我加快了速度。
| 归档时间: |
|
| 查看次数: |
7876 次 |
| 最近记录: |