是否可以在文件中包含.pyx.py

时间:2020-07-31 13:04:03

标签: python cython

我在python中有一个函数,用于循环进行一些计算是3个。这非常慢,所以我寻找了加快我的Python代码速度的解决方案,然后我看到Cython是一种加速Python代码的方法。我在笔记本中编写了Cython函数,效果很好,因此我想将其包含到现有项目中,但是现在我无法将此函数导入其他要调用的文件中。我尝试这样做method

import pyximport
pyximport.install()
from my module import function_a, function_b

但是它仍然给我以下错误:ModuleNotFoundError:没有名为“ my_module”的模块

我正在运行Python 3.8.3和Cython 0.29.21

我的文件夹结构如下

文件夹

  • my_module.pyx
  • where_I_want_to_call.py

1 个答案:

答案 0 :(得分:0)

文件结构:

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

包含_符号很重要。

代码:

test.py

import pyximport
pyximport.install()
import ip

if __name__ == '__main__':
    ip.check_ip('192.168.1.1')

ip.pyx

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文件一样。

相关问题