如何解决将 Python 项目传输到不同的计算机
我正在我的工作计算机和家用计算机上开发一个 Python 项目。 GitHub 使体验变得非常无缝。
但是我的 pyvenv.cfg
文件夹中的 venv
文件有问题。因为与家用计算机相比,我的 Python SDK 在我的工作计算机上具有不同的文件路径,所以每次我从我的另一台电脑,否则解释器不工作。
有人知道这个问题的解决方案吗?
解决方法
您不应该将完整的 virtualenv 保留在源代码管理中,因为它通常比您的代码大得多,并且其中可能存在特定于平台和解释器版本的位和 bob。
相反,您应该保存所需的包——久经考验的方法是一个 requirements.txt
文件(但有很多替代方案,如 Pyenv、Poetry、Dephell 等)——并重新创建运行项目所需的每台机器上的 virtualenv。
要为预先存在的项目保存需求文件,您可以
pip freeze > requirements.txt
当 virtualenv 处于活动状态时。
然后,你可以使用
pip install -r requirements.txt
完全安装这些软件包。
一般来说,我喜欢使用 pip-tools,所以我只管理一个带有包需求名称的 requirements.in
文件,然后 pip-compile
实用程序将那些具有确切版本的需求锁定到 {{ 1}}。
正如评论中所确认的,您已将虚拟环境文件夹添加到您的项目中,并将其包含在您放在 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.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 会识别出它缺少需求文件中的包并提供为您安装它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。