【问题标题】:Transferring a Python project to different computers将 Python 项目传输到不同的计算机
【发布时间】:2021-04-09 23:44:15
【问题描述】:

我正在我的工作计算机和家用计算机上处​​理 Python 项目。 GitHub 让体验变得非常无缝。

但我的venv 文件夹中的pyvenv.cfg 文件有问题。因为与我的家用计算机相比,我的工作计算机上的 Python SDK 具有不同的文件路径,所以每次我从另一台计算机上提取项目的更新版本时,我都必须手动进入 pyvenv.cfg 以更改 home = C:\Users\myName\... 文件路径,否则解释器不起作用。

有人知道这个问题的解决方案吗?

【问题讨论】:

  • 听起来您已将虚拟环境文件夹添加到您的项目中,并将其包含在您放在 GitHub 上的文件中 - 这个假设是否正确? (如果是这样,那不是这样做的方法,但很高兴在实际答案中解释如何解决)
  • 嗨 Grismar,这是正确的 - 我在 Github 上的存储库中包含了我的整个项目文件夹(包括虚拟环境文件夹)。这是我的第一个 Python 项目,我对 Github 也比较陌生。希望获得有关如何正确执行此操作的任何建议(只要我每次从不同计算机拉出时手动更改“pyvenv.cfg”中的文件路径,一切正常)。
  • 作为更多背景信息,我在这里了解了我的解决方法(pch 的回答):stackoverflow.com/questions/52404529/…

标签: python git pycharm interpreter pyvenv


【解决方案1】:

您不应该将完整的 virtualenv 保留在源代码管理中,因为它通常比您的代码大得多,并且其中可能存在特定于平台和解释器版本的部分。

相反,您应该保存所需的包——久经考验的方法是 requirements.txt 文件(但有很多替代品,如 Pyenv、Poetry、Dephell ......)——然后重新创建 virtualenv您需要在其上运行项目的每台机器。

要保存现有项目的需求文件,您可以

pip freeze > requirements.txt

当 virtualenv 处于活动状态时。

然后,你可以使用

pip install -r requirements.txt

安装这些软件包。

一般来说,我喜欢使用pip-tools,所以我只管理一个带有包需求名称的requirements.in 文件,然后pip-compile 实用程序将这些具有确切版本的需求锁定到requirements.txt

【讨论】:

    【解决方案2】:

    正如 cmets 中所确认的,您已将虚拟环境文件夹添加到您的项目中,并将其包含在您放在 GitHub 上的文件中。

    这通常是个坏主意,因为它首先破坏了拥有虚拟环境的部分目的。您的虚拟环境将包含特定于其所在机器的平台和配置的包 - 您可能在一台机器上在 Linux 上开发,而在另一台机器上在 Windows 上开发,您会遇到比配置文件中的一行更大的问题。

    你应该做什么:

    • 在项目/源文件夹之外的文件夹中创建虚拟环境。
    • 假设您使用的是pip,您可以运行pip freeze > requirements.txt 来创建一个requirements.txt 文件夹,然后您可以在另一个系统上使用pip install -r requirements.txt 来重新创建完全相同的虚拟环境。

    您所要做的就是保持requirements.txt 处于最新状态,并在任何一台计算机上的虚拟环境发生变化时更新它,而不是通过 GitHub 拉取它。

    更详细地说,一个简单的例子(对于 Windows,对于 Linux 非常相似):

    • 创建一个项目文件夹,例如C:\projects\my_project
    • 为项目创建一个虚拟环境,例如python -m venv C:\projects\venv\my_project
    • 激活环境,即C:\projects\venv\my_project\Scripts\activate.bat
    • 安装包,例如pip install numpy
    • 将安装的软件包保存到C:\projects\my_project 中的一个文件中,名为requirements.txtpip freeze > requirements.txt
    • 将项目存储在 Git 存储库中,包括该文件
    • 在另一台开发机器上,克隆或拉取项目,例如git clone https://github.com/my_project D:\workwork\projects\my_project
    • 在那台机器上,创建一个新的虚拟环境,例如python -m venv D:\workwork\venv\my_project
    • 激活环境,即D:\workwork\venv\my_project\Scripts\activate.bat
    • 使用pip install -r D:\workwork\projects\my_project\requirements.txt 安装所需的软件包

    既然你说你在使用 PyCharm,那就简单多了,只要确保 PyCharm 创建的环境位于你的项目文件夹之外。我喜欢将我所有的虚拟环境保存在一个文件夹中,并且 venv 名称与项目名称相匹配。

    您仍然可以在您的项目中创建requirements.txt,当您使用 PyCharm 将项目拉到另一台 PC 时,只需执行相同操作:在项目文件夹外创建一个 venv。 PyCharm 将识别出它缺少需求文件中的软件包,并提供为您安装它们。

    【讨论】:

    • 注意到人们仍在寻找此响应,今天我建议使用virtualenv,而不是在大多数情况下使用python -m venv;两者都可以,但是virtualenv 有一些您可能会喜欢或以后需要的功能virtualenv.pypa.io/en/latest 我认为它是创建和管理 Python 虚拟环境的最常用工具;像 PyCharm 这样的 IDE 默认集成了 virtualenv 来管理和创建虚拟环境(尽管它们当然支持其他的)
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多