gpt4 book ai didi

python - 嵌套工作区问题: packages with the same name seem to overwrite?

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:26 25 4
gpt4 key购买 nike

我正在开发一个需要嵌套工作区的项目——我们的项目有一个带有子模块的 git 存储库,并且两者都需要能够独立构建和运行 bazel 测试。

结构是这样的:

projectA
WORKSPACE
tools/
py/
testing.py
tests/
sample_test.py
projectB
WORKSPACE
tools/
py/
different_file.py

文件sample_test.py引用了projectA/tools/py/testing.pyprojectB/tools/py/Different_file.py

我的项目工作区有这样的配置:

local_repository(
name = "projectB",
path = __workspace_dir__ + "/projectB",
)

然后我的测试构建规则如下:

py_test(
name = "sample_test",
srcs = ["sample_test.py"],
deps = [
":class_under_test",
"//tools/py:testing",
"@projectB//tools/py:different_file",
]
)

testing.py 有这样的导入:

from tools.py.testing import functionA
from projectB.tools.py.different_file import functionB

现在,当我运行测试时,我收到一个 Python 错误:

ImportError: no module named tools.py.testing

如果我注释掉两个导入并只是说

import tools.py

在我的测试设置中,执行print(tools.py),它显示了projectB中的测试路径!

bazel-out/local-fastbuild/bin/analysis/py/test_name.runfiles/projectB/tools/py/__init__.pyc

正确的事情似乎在这里:

bazel-out/local-fastbuild/bin/analysis/py/test_name.runfiles/__main__/tools/py/testing.py

我在这里缺少什么?当然,有一种方法可以让嵌套工作区能够引用相同的路径,而不会相互干扰。

感谢您的宝贵时间!

最佳答案

当我在工作区文件中为projectA指定一个名称时,这个问题自行解决了:

workspace(name = "projectA")

我已经在项目 B 的 WORKSPACE 文件中包含该行,但它在项目 A 中被跳过。

关于python - 嵌套工作区问题: packages with the same name seem to overwrite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43697074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com