Python:pip无法找到使用meson安装的包

问题描述 投票:0回答:1

我一直在尝试解决为 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 .
时执行编译?

python pip meson-build
1个回答
0
投票

我设法解决了这个问题。

在存储库中的

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 上工作。

© www.soinside.com 2019 - 2024. All rights reserved.