我一直在尝试解决为 Windows 编译 Python 包的问题,其中一部分涉及在 MSYS2 上的 UCRT64 环境中构建
contourpy
。我已经能够使用以下命令在 virtualenv
中成功构建包:
$ python -m virtualenv ~/envs/contourpy
$ source ~/envs/contourpy/bin/activate
# Compile contourpy
$ git clone https://github.com/contourpy/contourpy.git
$ cd contourpy
$ meson setup builddir
$ ninja -C builddir
$ meson install -C builddir --destdir /home/guest/envs/contourpy
这些选项使我能够成功构建contourpy。但是,当我尝试运行
pip list
时,它不会出现在这个环境中。
当我尝试直接运行
pip install .
时,我收到以下错误消息:
Found ninja.EXE-1.11.1.git.kitware.jobserver-1 at C:/msys64/tmp/pip-build-env-0ba4jhpg/normal/bin/ninja.EXE
Visual Studio environment is needed to run Ninja. It is recommended to use Meson wrapper:
C:/msys64/tmp/pip-build-env-0ba4jhpg/overlay/bin/meson compile -C .
+ meson compile --ninja-args=['-v']
有没有办法让这个包在使用
pip install .
时执行编译?
我设法解决了这个问题。
在存储库中的
pyproject.toml
文件中,需要注释掉以下行:
...
[tool.meson-python.args]
compile = [
"-v",
]
dist = []
install = []
setup = [
# "--vsenv", # Forces use of MSVC on Windows, ignored on other platforms
]
...
UCRT64/MSYS2环境似乎不支持MSVC(或者我可能错过了安装编译器),导致后端运行的
meson-python
失败。禁用此行允许 pip install .
为 contourpy
在 UCRT64/MSYS2 上工作。