msys2 中 使用 pytorch

无法直接在 msys2 中安装 pytorch,安装会报错:

ERROR: Could not find a version that satisfies the requirement torch (from versions: none)

大概意思是torch没有与系统匹配的发布包。

但我想在 windows 使用 msys2 这样的类 linux 环境。

于是,我想到既然 msys2 只是一个类 linux 环境,内核还是 windows 的,那么我就在 windows 中安装好了 pytorch,再从 msys2 中调用不就行了。
注意:反之则不行,就是先在 msys2 中创建虚拟环境,再从 windows 下激活环境安装 torch,是走不通的,原因是因为,pip 只是一个封装器,背后的启动程序都在库目录 lib 中,既然模拟的 linux 环境,torch安装程序就会以为自己在 linux 中。
估计里面有标识操作系统的 meta 文件,这才导致 torch 识别系统不匹配的错误,要想修改就得修改替换 meta 的数据,太麻烦了,没必要。
必须用纯正的 windows python 去安装 torch 才行。

开始动手操作:
1、在 windows 系统中,用 python 创建虚拟环境 torch,目录要设置在 msys2 的 home 目录,为了以后在 msys2 中使用方便。

cd C:\msys64\ucrt\home\litifeng
python -m venv torch

2、激活 torch 环境 torch\script\activate
3、当然前期 nvidia驱动,cuda toolkit 都要提前安装好,还要保持驱动支持的cuda版本和cuda实际的版本一致。
4、一条命令安装好 pytorch:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

安装好的文件大概如下:

(torch) PS C:\msys64\home\litifeng> pip list
Package           Version
----------------- ------------
filelock          3.13.1
fsspec            2024.6.1
Jinja2            3.1.4
MarkupSafe        2.1.5
mpmath            1.3.0
networkx          3.3
numpy             2.1.2
pillow            11.0.0
pip               25.0.1
setuptools        70.2.0
sympy             1.13.3
torch             2.7.0+cu128
torchaudio        2.7.0+cu128
torchvision       0.22.0+cu128
typing_extensions 4.12.2

5、启动 msys2 ucrt 版本,这个 ucrt 是微软搞得统一c语言运行时,更适合 windows 系统。
这时发现由于是在 windows 中创建的虚拟环境,所以激活虚拟系统是 Script 文件夹,在 msys2 中不能用。
随便创建一个虚拟环境 py,把 py/bin/activate 这个文件复制到 torch 文件夹的 bin 目录,新建的bin目录与Script目录区分开,
再把 Script 目录中除了激活相关的文件外,其他的文件都复制到bin目录。
大概如下:

目录: C:\msys64\home\litifeng\torch\bin


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         2025/5/12      8:41           2182 activate
-a----         2025/5/12      8:45         108399 f2py.exe
-a----         2025/5/12      8:33         108388 isympy.exe
-a----         2025/5/12      8:45         108399 numpy-config.exe
-a----         2025/5/12      8:29         108404 pip.exe
-a----         2025/5/12      8:29         108404 pip3.12.exe
-a----         2025/5/12      8:29         108404 pip3.exe
-a----         2025/5/12      8:29         274424 python.exe
-a----         2025/5/12      8:29         263400 pythonw.exe
-a----         2025/5/12      8:34         108412 torchfrtrace.exe
-a----         2025/5/12      8:34         108403 torchrun.exe

这些操作罗嗦点,但是好理解,就是 python venv 本来就是一个目录,把需要的执行文件复制过来就行,如果有问题,检查 activate 文件的路径。
目录的这些执行文件,就是在windows下虚拟环境使用的程序,反正不管 msys2 还是 windows 都是windows下的可执行文件,这一点是一样的,也是这么操作能够成功的原因。
反正把握住这些原理,调整一下就能使用了。

6、测试一下,运行 python 进入互动模式后:

$ python
Python 3.12.10 (tags/v3.12.10:0cc8128, Apr  8 2025, 12:21:36) [MSC v.1943 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> a = torch.rand(5, 6)
>>> a
tensor([[0.6166, 0.0894, 0.2224, 0.2951, 0.3744, 0.8226],
        [0.9149, 0.6174, 0.1492, 0.4150, 0.8520, 0.4283],
        [0.9865, 0.0487, 0.8747, 0.2612, 0.2979, 0.3120],
        [0.7963, 0.3865, 0.6289, 0.2937, 0.1373, 0.9068],
        [0.5848, 0.5486, 0.0293, 0.2582, 0.2109, 0.9963]])

测试成功。

posted @ 2025-05-12 09:49  立体风  阅读(111)  评论(0)    收藏  举报