Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在一个Python程序中导入/使用两个不同版本的库(pytorch)?_Python_Import_Pytorch_Conda_Torch - Fatal编程技术网

如何在一个Python程序中导入/使用两个不同版本的库(pytorch)?

如何在一个Python程序中导入/使用两个不同版本的库(pytorch)?,python,import,pytorch,conda,torch,Python,Import,Pytorch,Conda,Torch,我需要在同一个pythonwebserver的不同部分使用两个不同版本的pytorch。不幸的是,我不能在我使用的同一个conda环境中同时安装它们。我已尝试从路径本身导入其中一个: MODULE_PATH = "/home/abc/anaconda3/envs/env/lib/python3.7/site-packages/torch/__init__.py" MODULE_NAME = "torch" import importlib import s

我需要在同一个pythonwebserver的不同部分使用两个不同版本的pytorch。不幸的是,我不能在我使用的同一个conda环境中同时安装它们。我已尝试从路径本身导入其中一个:

MODULE_PATH = "/home/abc/anaconda3/envs/env/lib/python3.7/site-packages/torch/__init__.py"
MODULE_NAME = "torch"
import importlib
import sys
spec = importlib.util.spec_from_file_location(MODULE_NAME, MODULE_PATH)
module = importlib.util.module_from_spec(spec)
sys.modules[spec.name] = module
spec.loader.exec_module(module)
这对于导入与活动环境中的版本不同的版本很好,但是在尝试导入第二个版本时,我遇到了一个错误(我尝试了简单的“导入火炬”,也与上面相同):

文件“/home/abc/anaconda3/envs/env2/lib/python3.7/site packages/torch/__init___;.py”,第82行,在
__all_uuu+=[目录中名称的名称(_C)
NameError:未定义名称“\u C”

关于如何使用这两个版本有什么想法吗?谢谢!

原则上,导入两个同名的库是不可能的。当然,可能您可以执行一些导入魔法并设法做到这一点。但是请记住,
pytorch
不是一个简单的Python包

现在,即使你设法解决了这个问题,你自己的服务需要两个不同的版本,这对我来说似乎非常奇怪。从长远来看,这种情况对你来说只是一个头痛的问题。我的建议是重新考虑你是如何做的


在不了解您的情况下,我建议将web服务拆分为两个。这将允许您拥有所需的两个环境和两个版本的
pytorch

原则上,导入两个同名库是不可能的。当然,您可能会执行一些导入魔法并设法做到这一点.但是请记住,
pytorch
不是一个简单的Python包

现在,即使你设法解决了这个问题,你自己的服务需要两个不同的版本,这对我来说似乎非常奇怪。从长远来看,这种情况对你来说只是一个头痛的问题。我的建议是重新考虑你是如何做的


在不了解您的情况的情况下,我建议将web服务拆分为两个。这将允许您拥有所需的两个环境和两个版本的
pytorch

是的,我目前正在将其拆分为两个web服务,只是想看看是否有更好的方法来完成。谢谢!可能会很有趣ting想知道为什么需要同时运行两个版本的pytorch(正如在您的问题中所描述的)。此外,如果您希望合并它们的原因是性能,也许您可以研究其他替代方案,例如使用gRPC进行通信(我猜您使用的是json)。是的,我目前正在将其拆分为两个web服务,只是想知道是否有更好的方法来完成。谢谢!了解您为什么需要同时运行两个版本的pytorch可能会很有趣(如您在问题中所述)。此外,如果您希望合并它们的原因是性能,那么您可以研究其他替代方法,例如使用gRPC进行通信(我猜您使用的是json)。
File "/home/abc/anaconda3/envs/env2/lib/python3.7/site-packages/torch/__init__.py", line 82, in <module>
    __all__ += [name for name in dir(_C)
NameError: name '_C' is not defined