I followed the instructions to the Federated Learning exercise in the Foundations of Private Computation course. I tried setting up the conda environment to run the tutorial code, following issues such as #423. However, I am still unable to import the syft
library.
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[2], line 1
----> 1 import syft as sy
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/__init__.py:59
57 from syft.core.node.vm.vm import VirtualMachineClient # noqa: F401
58 from syft.core.plan.plan import Plan # noqa: F401
---> 59 from syft.core.plan.plan_builder import make_plan # noqa: F401
60 from syft.experimental_flags import flags # noqa: F401
61 from syft.grid.client.client import login # noqa: F401
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/core/plan/plan_builder.py:15
12 from .plan import Plan
14 PLAN_BUILDER_VM: PlanVirtualMachine = PlanVirtualMachine(name="plan_vm")
---> 15 ROOT_CLIENT: Client = PLAN_BUILDER_VM.get_root_client()
18 def build_plan_inputs(forward_func: Callable) -> Dict[str, Pointer]:
19 signature = inspect.signature(forward_func)
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/core/node/common/node.py:289, in Node.get_root_client(self, routes)
288 def get_root_client(self, routes: Optional[List[Route]] = None) -> ClientT:
--> 289 client: ClientT = self.get_client(routes=routes)
290 self.root_verify_key = client.verify_key
291 return client
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/core/node/common/node.py:277, in Node.get_client(self, routes)
274 setattr(solo, "name", f"Route ({self.name} <-> {self.name} Client)")
275 routes = [solo]
--> 277 return self.client_type( # type: ignore
278 name=self.name,
279 routes=routes,
280 network=self.network,
281 domain=self.domain,
282 device=self.device,
283 vm=self.vm,
284 signing_key=None, # DO NOT PASS IN A SIGNING KEY!!! The client generates one.
285 verify_key=None, # DO NOT PASS IN A VERIFY KEY!!! The client generates one.
286 )
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/core/node/vm/client.py:34, in VirtualMachineClient.__init__(self, name, routes, vm, network, domain, device, signing_key, verify_key)
23 def __init__(
24 self,
25 name: Optional[str],
(...)
32 verify_key: Optional[VerifyKey] = None,
33 ):
---> 34 super().__init__(
35 name=name,
36 routes=routes,
37 network=network,
38 domain=domain,
39 device=device,
40 vm=vm,
41 signing_key=signing_key,
42 verify_key=verify_key,
43 )
45 self.post_init()
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/core/node/common/client.py:91, in Client.__init__(self, name, routes, network, domain, device, vm, signing_key, verify_key)
88 else:
89 self.verify_key = verify_key
---> 91 self.install_supported_frameworks()
93 self.store = StoreClient(client=self)
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/core/node/common/client.py:124, in Client.install_supported_frameworks(self)
123 def install_supported_frameworks(self) -> None:
--> 124 self.lib_ast = create_lib_ast(client=self)
126 # first time we want to register for future updates
127 self.lib_ast.register_updates(self)
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/lib/__init__.py:244, in create_lib_ast(client)
238 lib_ast.syft.core.add_attr(
239 "remote_dataloader", remote_dataloader_ast.syft.core.remote_dataloader
240 )
242 # let the misc creation be always the last, as it needs the full ast solved
243 # to properly generated unions
--> 244 union_misc_ast = getattr(getattr(create_union_ast(lib_ast, client), "syft"), "lib")
245 lib_ast.syft.lib.add_attr(attr_name="misc", attr=union_misc_ast.attrs["misc"])
247 return lib_ast
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/lib/misc/__init__.py:92, in create_union_ast(lib_ast, client)
84 classes.append(
85 (
86 f"syft.lib.misc.union.{klass.__name__}",
(...)
89 )
90 )
91 union_types = lazy_pairing[klass]
---> 92 allowed_functions = get_allowed_functions(lib_ast, union_types)
93 for target_method, allowed in allowed_functions.items():
94 if not allowed:
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/lib/misc/__init__.py:67, in get_allowed_functions(lib_ast, union_types)
65 for union_type in union_types:
66 real_type_function_set = solve_real_type_functions(union_type)
---> 67 ast_type_function_set = solve_ast_type_functions(union_type, lib_ast)
68 rejected_function_set = real_type_function_set - ast_type_function_set
69 for accepted_function in ast_type_function_set:
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/cachetools/__init__.py:737, in cached.<locals>.decorator.<locals>.wrapper(*args, **kwargs)
735 except KeyError:
736 pass # key not found
--> 737 v = func(*args, **kwargs)
738 try:
739 cache[k] = v
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/lib/misc/__init__.py:28, in solve_ast_type_functions(path, lib_ast)
26 root = lib_ast
27 for path_element in path.split("."):
---> 28 root = getattr(root, path_element)
29 return root.attrs.keys()
File ~/miniconda3/envs/openmined-courses/lib/python3.9/site-packages/syft/ast/module.py:256, in Module.__getattribute__(self, item)
247 def __getattribute__(self, item: str) -> Any:
248 """Get Attribute of a `module`.
249
250 Args:
(...)
254 The value of the attribute.
255 """
--> 256 target_object = super().__getattribute__(item)
257 if isinstance(target_object, ast.static_attr.StaticAttribute):
258 return target_object.get_remote_value()
AttributeError: 'Globals' object has no attribute 'pandas'
If applicable, add screenshots to help explain your problem.
Add any other context about the problem here.