【问题标题】:Use multiple aliases for a module depending on whether another module exists or not根据另一个模块是否存在,为一个模块使用多个别名
【发布时间】:2021-07-19 09:21:26
【问题描述】:

我目前正在做一些涉及cupy 的工作。总的来说,它使我的代码运行得更快,因为它在我的 GPU 上运行所有东西。现在,如果用户没有安装cupy,但他确实安装了numpy,我想进行必要的调整。目前,我正在像这样导入它们:import numpy as np; import cupy as cp。我可以检查讨论过的here 来测试cupy 是否没有安装,所以这不是问题。但是我不想在任何地方都放置条件或将cp 更改为np,因为如果确实安装了cupy,那会使事情变得复杂,我想改用它。因此,我测试了以下内容(理论上可以解决我的问题):

import numpy as np
import numpy as cp

a = np.zeros((3, 3))
b = cp.zeros((3, 3))

>>> print(type(a))
    <class 'numpy.ndarray'>
>>> print(type(b))
    <class 'numpy.ndarray'>

而且它似乎有效。尽管如此,我发现这个discussion(或this one),人们指出导入的多个别名是一个坏主意,但我没有找到任何详细说明为什么会这样。

有人可以详细说明这个主题并说明在处理使用一个模块 (cupy) 时如何解决这个问题,如果没有安装它的别名应该指向另一个 (numpy)?

【问题讨论】:

    标签: python-3.x numpy python-import


    【解决方案1】:

    要为 numpy 导入设置另一个别名,为什么不直接分配它?

    import numpy as np
    cp = np
    
    # then just use it normally,
    x = cp.arange(10)
    

    【讨论】:

    • 谢谢。我想这对于我的用例来说应该足够了。不过,我仍然对import 有两次怀疑。
    猜你喜欢
    • 1970-01-01
    • 2018-07-19
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2015-01-07
    • 2022-07-11
    相关资源
    最近更新 更多