我在 python 中有一个函数,它有 3 个 for 循环来进行一些计算。它非常慢,所以我寻找解决方案来加速我的 Python 代码,我发现 Cython 是一种加速 Python 代码的方法。我在笔记本中编写了 Cython 函数,它运行良好,因此我想将其包含到我现有的项目中,但现在我无法将此函数导入到其他要调用的文件中。我尝试这样做方法:
import pyximport
pyximport.install()
from my module import function_a, function_b
但它仍然给我以下错误:ModuleNotFoundError:没有名为“my_module”的模块
我正在运行 Python 3.8.3 和 Cython 0.29.21
我的文件夹结构如下
PS C:\Users\adeee\Desktop\test> tree /F
C:.
ip.pyx
test.py
所以你可以看到我有我运行的主要
test.py
文件。我还有一个 ip.pyx
文件,我从中导入 check_ip
函数。
也许您的代码中有某种拼写错误。我看得出你有
from my module import function_a, function_b
但你应该:
from my_module import function_a, function_b
包含
_
标志很重要。
import pyximport
pyximport.install()
import ip
if __name__ == '__main__':
ip.check_ip('192.168.1.1')
import ipaddress
def check_ip(user_ip):
try:
ip = ipaddress.ip_address(user_ip)
print(f'{ip} is correct. Version: IPv{ip.version}')
except ValueError:
print('Adress is invalid')
Generating code
Finished generating code
192.168.1.1 is correct. Version: IPv4
在导入任何
pyximport
模块之前,您必须导入 pyximport.install()
模块并运行 *.pyx
方法。运行这两个命令后,您应该有一个导入的模块,就像常规的 *.py
文件一样。
修改之前,我的代码在导入 utils.pyx 文件时总是返回如下: ''' 提示:确保您的测试模块/包具有有效的 Python 名称。 ''' 这对我有用,也是最简单的方法。