xmake icon indicating copy to clipboard operation
xmake copied to clipboard

有没有可能让 rule python.library 可以指定python版本?

Open KaivnD opened this issue 2 years ago • 1 comments

你在什么场景下需要该功能?

前段时间搞得python项目,用的pybind11,当时是py39,用起来非常的爽,似乎一切安好,但最近准备继续整,搞了好半天,一直都导入不了这个module,查了会儿,才发现,构建我这个项目的所用python已经默默的升级到了3.10,突然有种过去的项目经过了一段时间不是很牢靠的感觉。

然后我就在想,为什么会自动更新,查了一下相关的代码,得知,差不多两周前xmake-repo更新了python 3.10,然后我这边机器也自动下载了3.10

一开始是感觉惊讶,repo更新居然影响了旧项目,直到我看到了这个

package("pybind11")
-- .. --
    add_deps("cmake", "python 3.x")
--..--

尝试按照下面方法覆盖python版本参数,没有效果

add_requires("pybind11")
add_requireconfs("pybind11.python", {version = "3.9"})

描述可能的解决方案

最好是可以在python.library这个rule的项目里有个选项指定python版本

描述你认为的候选方案

我觉得可以这样

add_requires("python 3.9.x")

target("pytulo")
    add_rules("python.library", {soabi = true, version = "3.9.x"})
    --...--
    add_packages("pybind11")

其他信息

No response

KaivnD avatar Sep 16 '22 18:09 KaivnD

可以全局配置 set_policy("package.requires_lock", true),启用包依赖锁定。

package.requires_lock

尝试按照下面方法覆盖python版本参数,没有效果

配置 override = true

add_requireconfs("pybind11.python", {version = "3.9", override = true})

waruqi avatar Sep 17 '22 13:09 waruqi