如何从无法使用的 virtualenv 中拯救 Django 项目

How to rescue django project from unusable virtualenv

我有一个使用 django/wagtail 的基本站点,我在 virtualenv 中拥有它。我主要使用带有 ARM 处理器的 nas 设备。我最近将它转移到我的 x86-64 笔记本电脑上的虚拟机上,但无法使用它。

我知道了为什么,通过艰难的方式了解到 virtualenv 不是一种打包机制。我只是想知道 'best' 拯救 django 项目的方法是什么,也许以某种方式获得安装到 virtualenv 的 pip 包列表(因为 pip freeze -r 不会 运行 由于 pip 二进制文件用于 ARM)。

有没有一种简单的方法可以满足我的要求,或者我最好只尝试复制 django 文件并重新创建 virtualenv?

通常您会在项目中创建一个 requirements.txt 文件并使其与已安装的包保持同步。 https://pip.pypa.io/en/stable/user_guide/#requirements-files

每次执行 pip install some_package 时,您都必须将该包添加到 requirements.txt。确保固定版本。例如 pip install wagtail Wagtail 的安装运行。你会看到它选择了最新的。例如“2.1”。将 wagtail==2.1 添加到您的 requirements.txt

请注意 pip freeze 将转储所有已安装的软件包。但通常你只会将 'top level' 包(你安装的包)放在 requirements.txt 中,而不是将包放在依赖树中。由于升级 'top level' 软件包时依赖项可能会发生变化。

回答你的问题:

创建一个新的虚拟环境。检查损坏的 virtualenv 的站点包目录。所有已安装(但已损坏)的软件包都在那里。包括使用过的版本。将它们全部安装在新环境中。例如pip install wagtail==2.1