[go question]import cycle not allowed

本文深入探讨了Golang中禁止循环导入包的规定及其原因,通过具体代码示例展示了当两个包互相引用时编译器如何报错。文章强调了这种设计在大型项目中的合理性,帮助开发者理解并避免潜在的依赖问题。

golang不允许循环import package,如果检测到import cycle,会在编译时报错,通常import cycle是因为设计错误或包的规划问题。
例如下面这段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// src/ta/ta.go

package ta
import _ "tb"
import "fmt"

func Test(){
  fmt.Println("outputta")
}

// src/tb/tb.go
package tb
import _ "ta"
import "fmt"

func Test(){
  fmt.Println("outputtb")
}


// src/test/test.go
package main
import "ta"
import "tb"
func main(){
  ta.Test()
  tb.Test()
}

输出结果如下:

1
2
3
4
5
6
7
weihualiudeMacBook-Pro:testmweihualiu$goinstalltest
importcyclenotallowed
packagetest
importsta
importstb
importsta
weihualiudeMacBook-Pro:testmweihualiu$

golang对于包互相引用是绝对不允许的。从这点上可以看出,在大型项目中,golang的这种设计更合理。

hxj@hxj:~$ conda activate vlnce (vlnce) hxj@hxj:~$ cd VLN-CE/VLN-CE/ (vlnce) hxj@hxj:~/VLN-CE/VLN-CE$ python run.py --exp-config vlnce_baselines/config/r2r_baselines/nonlearning.yaml --run-type eval /home/hxj/anaconda3/envs/vlnce/lib/python3.6/site-packages/gym/core.py:27: UserWarning: WARN: Gym minimally supports python 3.6 as the python foundation not longer supports the version, please update your version to 3.7+ "Gym minimally supports python 3.6 as the python foundation not longer supports the version, please update your version to 3.7+" Gym has been unmaintained since 2022 and does not support NumPy 2.0 amongst other critical functionality. Please upgrade to Gymnasium, the maintained drop-in replacement of Gym, or contact the authors of your software and request that they upgrade. Users of this version of Gym should be able to simply replace 'import gym' with 'import gymnasium as gym' in the vast majority of cases. See the migration guide at https://gymnasium.farama.org/introduction/migration_guide/ for additional information. 2025-08-23 23:44:25,550 config: BASE_TASK_CONFIG_PATH: habitat_extensions/config/vlnce_task.yaml CHECKPOINT_FOLDER: data/checkpoints CHECKPOINT_INTERVAL: -1 CMD_TRAILING_OPTS: [] ENV_NAME: VLNCEDaggerEnv EVAL: EPISODE_COUNT: 10 EVAL_NONLEARNING: True LANGUAGES: ['en-US', 'en-IN'] NONLEARNING: AGENT: RandomAgent SAMPLE: False SAVE_RESULTS: True SPLIT: val_unseen USE_CKPT_CONFIG: True EVAL_CKPT_PATH_DIR: data/checkpoints FORCE_BLIND_POLICY: False IL: DAGGER: drop_existing_lmdb_features: True expert_policy_sensor: SHORTEST_PATH_SENSOR expert_policy_sensor_uuid: shortest_path_sensor iterations: 10 lmdb_commit_frequency: 500 lmdb_features_dir: data/trajectories_dirs/debug/trajectories.lmdb lmdb_fp16: False lmdb_map_size: 1200000000000.0 p: 0.75 preload_lmdb_features: False start_iteration: 0 update_size: 5000 RECOLLECT_TRAINER: effective_batch_size: -1 gt_file: data/datasets/RxR_VLNCE_v0/{split}/{split}_{role}_gt.json.gz max_traj_len: -1 preload_size: 30 preload_trajectories_file: False trajectories_file: data/trajectories_dirs/debug/trajectories.json.gz batch_size: 5 ckpt_to_load: data/checkpoints/ckpt.0.pth epochs: 4 inflection_weight_coef: 3.2 is_requeue: False load_from_ckpt: False lr: 0.00025 use_iw: True INFERENCE: CKPT_PATH: data/checkpoints/CMA_PM_DA_Aug.pth FORMAT: rxr INFERENCE_NONLEARNING: True LANGUAGES: ['en-US', 'en-IN'] NONLEARNING: AGENT: RandomAgent PREDICTIONS_FILE: predictions.json SAMPLE: False SPLIT: val_unseen USE_CKPT_CONFIG: True LOG_FILE: train.log LOG_INTERVAL: 10 MODEL: DEPTH_ENCODER: backbone: resnet50 cnn_type: VlnResnetDepthEncoder ddppo_checkpoint: data/ddppo-models/gibson-2plus-resnet50.pth output_size: 128 trainable: False INSTRUCTION_ENCODER: bidirectional: False dataset_vocab: data/datasets/R2R_VLNCE_v1-3_preprocessed/train/train.json.gz embedding_file: data/datasets/R2R_VLNCE_v1-3_preprocessed/embeddings.json.gz embedding_size: 50 final_state_only: True fine_tune_embeddings: False hidden_size: 128 rnn_type: LSTM sensor_uuid: instruction use_pretrained_embeddings: True vocab_size: 2504 PROGRESS_MONITOR: alpha: 1.0 use: False RGB_ENCODER: cnn_type: TorchVisionResNet50 output_size: 256 trainable: False SEQ2SEQ: use_prev_action: False STATE_ENCODER: hidden_size: 512 rnn_type: GRU WAYPOINT: continuous_distance: True continuous_offset: True discrete_distances: 6 discrete_offsets: 7 max_distance_prediction: 2.75 max_distance_var: 3.52 max_offset_var: 0.0685 min_distance_prediction: 0.25 min_distance_var: 0.0625 min_offset_var: 0.011 offset_temperature: 1.0 predict_distance: True predict_offset: True ablate_depth: False ablate_instruction: False ablate_rgb: False normalize_rgb: False policy_name: CMAPolicy NUM_CHECKPOINTS: 10 NUM_ENVIRONMENTS: 16 NUM_PROCESSES: -1 NUM_UPDATES: 10000 ORBSLAM2: ANGLE_TH: 0.2617993877991494 BETA: 100 CAMERA_HEIGHT: 1.25 DEPTH_DENORM: 10.0 DIST_REACHED_TH: 0.15 DIST_TO_STOP: 0.05 D_OBSTACLE_MAX: 4.0 D_OBSTACLE_MIN: 0.1 H_OBSTACLE_MAX: 1.25 H_OBSTACLE_MIN: 0.375 MAP_CELL_SIZE: 0.1 MAP_SIZE: 40 MIN_PTS_IN_OBSTACLE: 320.0 NEXT_WAYPOINT_TH: 0.5 NUM_ACTIONS: 3 PLANNER_MAX_STEPS: 500 PREPROCESS_MAP: True SLAM_SETTINGS_PATH: habitat_baselines/slambased/data/mp3d3_small1k.yaml SLAM_VOCAB_PATH: habitat_baselines/slambased/data/ORBvoc.txt PROFILING: CAPTURE_START_STEP: -1 NUM_STEPS_TO_CAPTURE: -1 RESULTS_DIR: data/checkpoints/pretrained/evals RL: CHECKPOINT_INTERVAL: 250 DDPPO: backbone: resnet18 distrib_backend: NCCL force_distributed: False num_recurrent_layers: 1 pretrained: False pretrained_encoder: False pretrained_weights: data/ddppo-models/gibson-2plus-resnet50.pth requeue_path: data/interrupted_state.pth reset_critic: True rnn_type: GRU start_from_requeue: False sync_frac: 0.6 train_encoder: True LOG_INTERVAL: 10 NUM_UPDATES: 200000 POLICY: OBS_TRANSFORMS: CENTER_CROPPER: HEIGHT: 256 WIDTH: 256 CENTER_CROPPER_PER_SENSOR: SENSOR_CROPS: [('rgb', (224, 224)), ('depth', (256, 256))] CUBE2EQ: HEIGHT: 256 SENSOR_UUIDS: [] WIDTH: 512 CUBE2FISH: FOV: 180 HEIGHT: 256 PARAMS: (0.2, 0.2, 0.2) SENSOR_UUIDS: [] WIDTH: 256 ENABLED_TRANSFORMS: () EQ2CUBE: HEIGHT: 256 SENSOR_UUIDS: [] WIDTH: 256 OBS_STACK: SENSOR_REWRITES: [('rgb', ['rgb', 'rgb_1', 'rgb_2', 'rgb_3', 'rgb_4', 'rgb_5', 'rgb_6', 'rgb_7', 'rgb_8', 'rgb_9', 'rgb_10', 'rgb_11']), ('depth', ['depth', 'depth_1', 'depth_2', 'depth_3', 'depth_4', 'depth_5', 'depth_6', 'depth_7', 'depth_8', 'depth_9', 'depth_10', 'depth_11'])] RESIZE_SHORTEST_EDGE: SIZE: 256 name: PointNavResNetPolicy PPO: clip_param: 0.2 clip_value_loss: True distance_entropy_coef: 0.0 entropy_coef: 0.01 eps: 1e-05 gamma: 0.99 hidden_size: 512 lr: 0.0002 max_grad_norm: 0.2 num_mini_batch: 4 num_steps: 16 offset_entropy_coef: 0.0 offset_regularize_coef: 0.1146 pano_entropy_coef: 1.0 ppo_epoch: 2 reward_window_size: 50 tau: 0.95 use_double_buffered_sampler: False use_gae: True use_linear_clip_decay: False use_linear_lr_decay: False use_normalized_advantage: False value_loss_coef: 0.5 REWARD_MEASURE: waypoint_reward_measure SLACK_REWARD: -0.01 SUCCESS_MEASURE: success SUCCESS_REWARD: 2.5 SENSORS: ['RGB_SENSOR', 'DEPTH_SENSOR'] SIMULATOR_GPU_IDS: [0] TASK_CONFIG: DATASET: CONTENT_SCENES: ['*'] DATA_PATH: data/datasets/R2R_VLNCE_v1-3_preprocessed/{split}/{split}.json.gz EPISODES_ALLOWED: ['*'] LANGUAGES: ['*'] ROLES: ['guide'] SCENES_DIR: data/scene_datasets/ SPLIT: train TYPE: VLN-CE-v1 ENVIRONMENT: ITERATOR_OPTIONS: CYCLE: True GROUP_BY_SCENE: True MAX_SCENE_REPEAT_EPISODES: -1 MAX_SCENE_REPEAT_STEPS: 10000 NUM_EPISODE_SAMPLE: -1 SHUFFLE: True STEP_REPETITION_RANGE: 0.2 MAX_EPISODE_SECONDS: 10000000 MAX_EPISODE_STEPS: 500 PYROBOT: BASE_CONTROLLER: proportional BASE_PLANNER: none BUMP_SENSOR: TYPE: PyRobotBumpSensor DEPTH_SENSOR: CENTER_CROP: False HEIGHT: 480 MAX_DEPTH: 5.0 MIN_DEPTH: 0.0 NORMALIZE_DEPTH: True TYPE: PyRobotDepthSensor WIDTH: 640 LOCOBOT: ACTIONS: ['BASE_ACTIONS', 'CAMERA_ACTIONS'] BASE_ACTIONS: ['go_to_relative', 'go_to_absolute'] CAMERA_ACTIONS: ['set_pan', 'set_tilt', 'set_pan_tilt'] RGB_SENSOR: CENTER_CROP: False HEIGHT: 480 TYPE: PyRobotRGBSensor WIDTH: 640 ROBOT: locobot ROBOTS: ['locobot'] SENSORS: ['RGB_SENSOR', 'DEPTH_SENSOR', 'BUMP_SENSOR'] SEED: 100 SIMULATOR: ACTION_SPACE_CONFIG: v0 AGENTS: ['AGENT_0'] AGENT_0: ANGULAR_ACCELERATION: 12.56 ANGULAR_FRICTION: 1.0 COEFFICIENT_OF_RESTITUTION: 0.0 HEIGHT: 1.5 IS_SET_START_STATE: False LINEAR_ACCELERATION: 20.0 LINEAR_FRICTION: 0.5 MASS: 32.0 RADIUS: 0.1 SENSORS: ['RGB_SENSOR', 'DEPTH_SENSOR'] START_POSITION: [0, 0, 0] START_ROTATION: [0, 0, 0, 1] DEFAULT_AGENT_ID: 0 DEPTH_SENSOR: HEIGHT: 256 HFOV: 90 MAX_DEPTH: 10.0 MIN_DEPTH: 0.0 NORMALIZE_DEPTH: True ORIENTATION: [0.0, 0.0, 0.0] POSITION: [0, 1.25, 0] TYPE: HabitatSimDepthSensor WIDTH: 256 FORWARD_STEP_SIZE: 0.25 HABITAT_SIM_V0: ALLOW_SLIDING: True ENABLE_PHYSICS: False GPU_DEVICE_ID: 0 GPU_GPU: False PHYSICS_CONFIG_FILE: ./data/default.physics_config.json RGB_SENSOR: HEIGHT: 224 HFOV: 90 ORIENTATION: [0.0, 0.0, 0.0] POSITION: [0, 1.25, 0] TYPE: HabitatSimRGBSensor WIDTH: 224 SCENE: data/scene_datasets/habitat-test-scenes/van-gogh-room.glb SEED: 100 SEMANTIC_SENSOR: HEIGHT: 480 HFOV: 90 ORIENTATION: [0.0, 0.0, 0.0] POSITION: [0, 1.25, 0] TYPE: HabitatSimSemanticSensor WIDTH: 640 TILT_ANGLE: 15 TURN_ANGLE: 15 TYPE: Sim-v0 TASK: ACTIONS: ANSWER: TYPE: AnswerAction GO_TOWARD_POINT: TYPE: GoTowardPoint rotate_agent: True LOOK_DOWN: TYPE: LookDownAction LOOK_UP: TYPE: LookUpAction MOVE_FORWARD: TYPE: MoveForwardAction STOP: TYPE: StopAction TELEPORT: TYPE: TeleportAction TURN_LEFT: TYPE: TurnLeftAction TURN_RIGHT: TYPE: TurnRightAction ANSWER_ACCURACY: TYPE: AnswerAccuracy COLLISIONS: TYPE: Collisions COMPASS_SENSOR: TYPE: CompassSensor CORRECT_ANSWER: TYPE: CorrectAnswer DISTANCE_TO_GOAL: DISTANCE_TO: POINT TYPE: DistanceToGoal EPISODE_INFO: TYPE: EpisodeInfo GLOBAL_GPS_SENSOR: DIMENSIONALITY: 2 TYPE: GlobalGPSSensor GOAL_SENSOR_UUID: pointgoal GPS_SENSOR: DIMENSIONALITY: 2 TYPE: GPSSensor HEADING_SENSOR: TYPE: HeadingSensor IMAGEGOAL_SENSOR: TYPE: ImageGoalSensor INSTRUCTION_SENSOR: TYPE: InstructionSensor INSTRUCTION_SENSOR_UUID: instruction MEASUREMENTS: ['DISTANCE_TO_GOAL', 'SUCCESS', 'SPL', 'NDTW', 'PATH_LENGTH', 'ORACLE_SUCCESS', 'STEPS_TAKEN'] NDTW: FDTW: True GT_PATH: data/datasets/R2R_VLNCE_v1-3_preprocessed/{split}/{split}_gt.json.gz SPLIT: train SUCCESS_DISTANCE: 3.0 TYPE: NDTW OBJECTGOAL_SENSOR: GOAL_SPEC: TASK_CATEGORY_ID GOAL_SPEC_MAX_VAL: 50 TYPE: ObjectGoalSensor ORACLE_ACTION_SENSOR: GOAL_RADIUS: 0.5 TYPE: OracleActionSensor ORACLE_NAVIGATION_ERROR: TYPE: OracleNavigationError ORACLE_SPL: TYPE: OracleSPL ORACLE_SUCCESS: SUCCESS_DISTANCE: 3.0 TYPE: OracleSuccess PANO_ANGLE_FEATURE_SENSOR: CAMERA_NUM: 12 TYPE: AngleFeaturesSensor PANO_ROTATIONS: 12 PATH_LENGTH: TYPE: PathLength POINTGOAL_SENSOR: DIMENSIONALITY: 2 GOAL_FORMAT: POLAR TYPE: PointGoalSensor POINTGOAL_WITH_GPS_COMPASS_SENSOR: DIMENSIONALITY: 2 GOAL_FORMAT: POLAR TYPE: PointGoalWithGPSCompassSensor POSSIBLE_ACTIONS: ['STOP', 'MOVE_FORWARD', 'TURN_LEFT', 'TURN_RIGHT'] PROXIMITY_SENSOR: MAX_DETECTION_RADIUS: 2.0 TYPE: ProximitySensor QUESTION_SENSOR: TYPE: QuestionSensor RXR_INSTRUCTION_SENSOR: TYPE: RxRInstructionSensor features_path: data/datasets/RxR_VLNCE_v0/text_features/rxr_{split}/{id:06}_{lang}_text_features.npz SDTW: TYPE: SDTW SENSORS: ['INSTRUCTION_SENSOR', 'SHORTEST_PATH_SENSOR', 'VLN_ORACLE_PROGRESS_SENSOR'] SHORTEST_PATH_SENSOR: GOAL_RADIUS: 0.5 TYPE: ShortestPathSensor USE_ORIGINAL_FOLLOWER: False SOFT_SPL: TYPE: SoftSPL SPL: SUCCESS_DISTANCE: 3.0 TYPE: SPL STEPS_TAKEN: TYPE: StepsTaken SUCCESS: SUCCESS_DISTANCE: 3.0 TYPE: Success SUCCESS_DISTANCE: 3.0 TOP_DOWN_MAP: DRAW_BORDER: True DRAW_GOAL_AABBS: True DRAW_GOAL_POSITIONS: True DRAW_SHORTEST_PATH: True DRAW_SOURCE: True DRAW_VIEW_POINTS: True FOG_OF_WAR: DRAW: True FOV: 90 VISIBILITY_DIST: 5.0 MAP_PADDING: 3 MAP_RESOLUTION: 1024 MAX_EPISODE_STEPS: 1000 TYPE: TopDownMap TOP_DOWN_MAP_VLNCE: DRAW_BORDER: True DRAW_FIXED_WAYPOINTS: True DRAW_MP3D_AGENT_PATH: True DRAW_REFERENCE_PATH: True DRAW_SHORTEST_PATH: True DRAW_SOURCE_AND_TARGET: True FOG_OF_WAR: DRAW: True FOV: 90 VISIBILITY_DIST: 5.0 GRAPHS_FILE: data/connectivity_graphs.pkl MAP_RESOLUTION: 1024 MAX_EPISODE_STEPS: 1000 TYPE: TopDownMapVLNCE TYPE: VLN-v0 VLN_ORACLE_PROGRESS_SENSOR: TYPE: VLNOracleProgressSensor WAYPOINT_REWARD_MEASURE: TYPE: WaypointRewardMeasure distance_scalar: 1.0 scale_slack_on_prediction: True slack_reward: -0.05 success_reward: 2.5 use_distance_scaled_slack_reward: True TENSORBOARD_DIR: data/tensorboard_dirs/debug TORCH_GPU_ID: 0 TOTAL_NUM_STEPS: -1.0 TRAINER_NAME: dagger VERBOSE: True VIDEO_DIR: data/videos/debug VIDEO_OPTION: [] 2025-08-23 23:44:25,691 Initializing dataset VLN-CE-v1 2025-08-23 23:44:25,728 initializing sim Sim-v0 WARNING: Logging before InitGoogleLogging() is written to STDERR I0823 23:44:25.728684 14193 ManagedContainerBase.cpp:19] ManagedContainerBase::convertFilenameToJSON : Filename : default changed to proposed JSON configuration filename : default.scene_dataset_config.json I0823 23:44:25.729511 14193 AttributesManagerBase.h:283] AttributesManager<T>::createFromJsonOrDefaultInternal (Dataset) : Proposing JSON name : default.scene_dataset_config.json from original name : default | This file does not exist. I0823 23:44:25.729565 14193 AssetAttributesManager.cpp:117] Asset attributes (capsule3DSolid : capsule3DSolid_hemiRings_4_cylRings_1_segments_12_halfLen_0.75_useTexCoords_false_useTangents_false) created and registered. I0823 23:44:25.729586 14193 AssetAttributesManager.cpp:117] Asset attributes (capsule3DWireframe : capsule3DWireframe_hemiRings_8_cylRings_1_segments_16_halfLen_1) created and registered. I0823 23:44:25.729604 14193 AssetAttributesManager.cpp:117] Asset attributes (coneSolid : coneSolid_segments_12_halfLen_1.25_rings_1_useTexCoords_false_useTangents_false_capEnd_true) created and registered. I0823 23:44:25.729614 14193 AssetAttributesManager.cpp:117] Asset attributes (coneWireframe : coneWireframe_segments_32_halfLen_1.25) created and registered. I0823 23:44:25.729620 14193 AssetAttributesManager.cpp:117] Asset attributes (cubeSolid : cubeSolid) created and registered. I0823 23:44:25.729626 14193 AssetAttributesManager.cpp:117] Asset attributes (cubeWireframe : cubeWireframe) created and registered. I0823 23:44:25.729640 14193 AssetAttributesManager.cpp:117] Asset attributes (cylinderSolid : cylinderSolid_rings_1_segments_12_halfLen_1_useTexCoords_false_useTangents_false_capEnds_true) created and registered. I0823 23:44:25.729651 14193 AssetAttributesManager.cpp:117] Asset attributes (cylinderWireframe : cylinderWireframe_rings_1_segments_32_halfLen_1) created and registered. I0823 23:44:25.729660 14193 AssetAttributesManager.cpp:117] Asset attributes (icosphereSolid : icosphereSolid_subdivs_1) created and registered. I0823 23:44:25.729664 14193 AssetAttributesManager.cpp:117] Asset attributes (icosphereWireframe : icosphereWireframe_subdivs_1) created and registered. I0823 23:44:25.729674 14193 AssetAttributesManager.cpp:117] Asset attributes (uvSphereSolid : uvSphereSolid_rings_8_segments_16_useTexCoords_false_useTangents_false) created and registered. I0823 23:44:25.729682 14193 AssetAttributesManager.cpp:117] Asset attributes (uvSphereWireframe : uvSphereWireframe_rings_16_segments_32) created and registered. I0823 23:44:25.729686 14193 AssetAttributesManager.cpp:105] AssetAttributesManager::buildCtorFuncPtrMaps : Built default primitive asset templates : 12 I0823 23:44:25.729933 14193 SceneDatasetAttributesManager.cpp:23] File (default) not found, so new default dataset attributes created and registered. I0823 23:44:25.729938 14193 MetadataMediator.cpp:47] MetadataMediator::createDataset : Dataset default successfully created. I0823 23:44:25.732090 14193 AttributesManagerBase.h:283] AttributesManager<T>::createFromJsonOrDefaultInternal (Physics Manager) : Proposing JSON name : ./data/default.physics_config.json from original name : ./data/default.physics_config.json | This file does not exist. I0823 23:44:25.732100 14193 PhysicsAttributesManager.cpp:27] File (./data/default.physics_config.json) not found, so new default physics manager attributes created and registered. I0823 23:44:25.732102 14193 AbstractObjectAttributesManagerBase.h:175] AbstractObjectAttributesManager<T>::createObject (Stage) : Making attributes with handle : data/scene_datasets/mp3d/zsNo4HB9uLZ/zsNo4HB9uLZ.glb I0823 23:44:25.732105 14193 ManagedContainerBase.cpp:19] ManagedContainerBase::convertFilenameToJSON : Filename : data/scene_datasets/mp3d/zsNo4HB9uLZ/zsNo4HB9uLZ.glb changed to proposed JSON configuration filename : data/scene_datasets/mp3d/zsNo4HB9uLZ/zsNo4HB9uLZ.stage_config.json I0823 23:44:25.732108 14193 AttributesManagerBase.h:283] AttributesManager<T>::createFromJsonOrDefaultInternal (Stage) : Proposing JSON name : data/scene_datasets/mp3d/zsNo4HB9uLZ/zsNo4HB9uLZ.stage_config.json from original name : data/scene_datasets/mp3d/zsNo4HB9uLZ/zsNo4HB9uLZ.glb | This file does not exist. E0823 23:44:25.732129 14193 StageAttributesManager.cpp:90] StageAttributesManager::registerObjectFinalize : Render asset template handle : data/scene_datasets/mp3d/zsNo4HB9uLZ/zsNo4HB9uLZ.glb specified in stage template with handle : data/scene_datasets/mp3d/zsNo4HB9uLZ/zsNo4HB9uLZ.glb does not correspond to any existing file or primitive render asset. Aborting. I0823 23:44:25.732131 14193 AbstractObjectAttributesManagerBase.h:181] AbstractObjectAttributesManager<T>::createObject (Stage) : Done making attributes with handle : data/scene_datasets/mp3d/zsNo4HB9uLZ/zsNo4HB9uLZ.glb 段错误 (核心已转储)
最新发布
08-24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值