将 Python 个项目传输到不同的计算机
Transferring a Python project to different computers
我正在工作计算机和家用计算机上进行 Python 项目。 GitHub 使体验非常顺畅。
但是我的 venv
文件夹中的 pyvenv.cfg
文件有问题。因为我的 Python SDK 在工作电脑上的文件路径与家用电脑不同,所以每次拉更新版本时我都必须手动进入 pyvenv.cfg
更改 home = C:\Users\myName\...
文件路径我的项目从我的另一台计算机,否则解释器不工作。
有人知道这个问题的解决方案吗?
您不应该将完整的 virtualenv 保留在源代码管理中,因为它通常比您的代码大得多,并且其中可能有平台和解释器版本特定的位和 bob。
相反,您应该保存所需的包——久经考验的方法是 requirements.txt
文件(但还有很多替代方案,例如 Pyenv、Poetry、Dephell 等)——以及在每台需要 运行 项目的机器上重新创建 virtualenv。
要为预先存在的项目保存需求文件,您可以
pip freeze > requirements.txt
当 virtualenv 处于活动状态时。
然后,您可以使用
pip install -r requirements.txt
安装这些软件包。
一般来说,我喜欢使用 pip-tools,所以我只管理一个包含包需求名称的 requirements.in
文件,然后 pip-compile
实用程序将那些具有确切版本的需求锁定到requirements.txt
.
如评论中所确认,您已将虚拟环境文件夹添加到您的项目中,并将其包含在您放在 GitHub 上的文件中。
这通常是个坏主意,因为它首先违背了拥有虚拟环境的部分目的。您的虚拟环境将包含特定于其所在机器的平台和配置的包——您可能在一台机器上 Linux 上开发,而在另一台机器上 Windows 上开发,你会遇到比一台机器更大的问题配置文件中的行。
你应该做什么:
- 在项目/源文件夹之外的文件夹中创建虚拟环境。
- 假设您正在使用
pip
,您可以 运行 pip freeze > requirements.txt
创建一个 requirements.txt
文件夹,然后您可以在另一个系统上使用 [=13] =] 重新创建完全相同的虚拟环境。
您所要做的就是保持 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.txt
和 pip 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 会识别出它缺少需求文件中的软件包,并愿意为您安装它们。
我正在工作计算机和家用计算机上进行 Python 项目。 GitHub 使体验非常顺畅。
但是我的 venv
文件夹中的 pyvenv.cfg
文件有问题。因为我的 Python SDK 在工作电脑上的文件路径与家用电脑不同,所以每次拉更新版本时我都必须手动进入 pyvenv.cfg
更改 home = C:\Users\myName\...
文件路径我的项目从我的另一台计算机,否则解释器不工作。
有人知道这个问题的解决方案吗?
您不应该将完整的 virtualenv 保留在源代码管理中,因为它通常比您的代码大得多,并且其中可能有平台和解释器版本特定的位和 bob。
相反,您应该保存所需的包——久经考验的方法是 requirements.txt
文件(但还有很多替代方案,例如 Pyenv、Poetry、Dephell 等)——以及在每台需要 运行 项目的机器上重新创建 virtualenv。
要为预先存在的项目保存需求文件,您可以
pip freeze > requirements.txt
当 virtualenv 处于活动状态时。
然后,您可以使用
pip install -r requirements.txt
安装这些软件包。
一般来说,我喜欢使用 pip-tools,所以我只管理一个包含包需求名称的 requirements.in
文件,然后 pip-compile
实用程序将那些具有确切版本的需求锁定到requirements.txt
.
如评论中所确认,您已将虚拟环境文件夹添加到您的项目中,并将其包含在您放在 GitHub 上的文件中。
这通常是个坏主意,因为它首先违背了拥有虚拟环境的部分目的。您的虚拟环境将包含特定于其所在机器的平台和配置的包——您可能在一台机器上 Linux 上开发,而在另一台机器上 Windows 上开发,你会遇到比一台机器更大的问题配置文件中的行。
你应该做什么:
- 在项目/源文件夹之外的文件夹中创建虚拟环境。
- 假设您正在使用
pip
,您可以 运行pip freeze > requirements.txt
创建一个requirements.txt
文件夹,然后您可以在另一个系统上使用 [=13] =] 重新创建完全相同的虚拟环境。
您所要做的就是保持 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.txt
和pip 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 会识别出它缺少需求文件中的软件包,并愿意为您安装它们。