fix: ensure vendored detectron2 on PYTHONPATH for subprocesses
Browse files
mvp.py
CHANGED
|
@@ -49,6 +49,11 @@ except Exception:
|
|
| 49 |
REPO_ROOT = os.path.dirname(os.path.abspath(__file__))
|
| 50 |
sys.path.append(os.path.join(REPO_ROOT, "vggt"))
|
| 51 |
MK_PATH = os.path.join(REPO_ROOT, "MaskClustering")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
|
| 53 |
# Writable workdir (HF Spaces: prefer /tmp)
|
| 54 |
WORK_DIR = os.environ.get("ZOO3D_WORKDIR", os.path.join(tempfile.gettempdir(), "zoo3d"))
|
|
@@ -655,6 +660,14 @@ def reconstruct(
|
|
| 655 |
os.path.join(MK_PATH, cropformer_name),
|
| 656 |
],
|
| 657 |
check=True,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 658 |
)
|
| 659 |
|
| 660 |
subprocess.run(
|
|
@@ -672,7 +685,12 @@ def reconstruct(
|
|
| 672 |
)
|
| 673 |
|
| 674 |
env = dict(os.environ)
|
| 675 |
-
env["PYTHONPATH"] =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 676 |
subprocess.run(
|
| 677 |
[
|
| 678 |
sys.executable,
|
|
@@ -941,7 +959,12 @@ def detect_objects(text_labels, target_dir, conf_thres, *viz_args):
|
|
| 941 |
print(f"Text features: {text_features}")
|
| 942 |
try:
|
| 943 |
env = dict(os.environ)
|
| 944 |
-
env["PYTHONPATH"] =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 945 |
root_input_dir = os.path.dirname(target_dir)
|
| 946 |
seq_name = os.path.basename(target_dir)
|
| 947 |
subprocess.run(
|
|
|
|
| 49 |
REPO_ROOT = os.path.dirname(os.path.abspath(__file__))
|
| 50 |
sys.path.append(os.path.join(REPO_ROOT, "vggt"))
|
| 51 |
MK_PATH = os.path.join(REPO_ROOT, "MaskClustering")
|
| 52 |
+
DETECTRON2_ROOT = os.path.join(REPO_ROOT, "MaskClustering", "third_party", "detectron2")
|
| 53 |
+
|
| 54 |
+
# If detectron2 isn't installed as a package, allow importing from vendored source.
|
| 55 |
+
if os.path.isdir(DETECTRON2_ROOT) and DETECTRON2_ROOT not in sys.path:
|
| 56 |
+
sys.path.append(DETECTRON2_ROOT)
|
| 57 |
|
| 58 |
# Writable workdir (HF Spaces: prefer /tmp)
|
| 59 |
WORK_DIR = os.environ.get("ZOO3D_WORKDIR", os.path.join(tempfile.gettempdir(), "zoo3d"))
|
|
|
|
| 660 |
os.path.join(MK_PATH, cropformer_name),
|
| 661 |
],
|
| 662 |
check=True,
|
| 663 |
+
env={
|
| 664 |
+
**os.environ,
|
| 665 |
+
# Ensure detectron2 is importable even if not installed via pip
|
| 666 |
+
"PYTHONPATH": DETECTRON2_ROOT
|
| 667 |
+
+ os.pathsep
|
| 668 |
+
+ MK_PATH
|
| 669 |
+
+ (os.pathsep + os.environ["PYTHONPATH"] if os.environ.get("PYTHONPATH") else ""),
|
| 670 |
+
},
|
| 671 |
)
|
| 672 |
|
| 673 |
subprocess.run(
|
|
|
|
| 685 |
)
|
| 686 |
|
| 687 |
env = dict(os.environ)
|
| 688 |
+
env["PYTHONPATH"] = (
|
| 689 |
+
DETECTRON2_ROOT
|
| 690 |
+
+ os.pathsep
|
| 691 |
+
+ MK_PATH
|
| 692 |
+
+ (os.pathsep + env["PYTHONPATH"] if env.get("PYTHONPATH") else "")
|
| 693 |
+
)
|
| 694 |
subprocess.run(
|
| 695 |
[
|
| 696 |
sys.executable,
|
|
|
|
| 959 |
print(f"Text features: {text_features}")
|
| 960 |
try:
|
| 961 |
env = dict(os.environ)
|
| 962 |
+
env["PYTHONPATH"] = (
|
| 963 |
+
DETECTRON2_ROOT
|
| 964 |
+
+ os.pathsep
|
| 965 |
+
+ MK_PATH
|
| 966 |
+
+ (os.pathsep + env["PYTHONPATH"] if env.get("PYTHONPATH") else "")
|
| 967 |
+
)
|
| 968 |
root_input_dir = os.path.dirname(target_dir)
|
| 969 |
seq_name = os.path.basename(target_dir)
|
| 970 |
subprocess.run(
|