我正在使用cython从py编译一个文件到pyd,我按如下方式创建我的setup.py:
from setuptools import setup
from Cython.Build import cythonize
setup(
name = "My App",
ext_modules = cythonize(['src\\lib\\module.py'])
setup(
name = "My App",
ext_modules = cythonize(['src\\lib\\module.py'])
它在main.py中导入如下:
当我使用命令“python main.py”运行我的应用程序时,它可以工作,但是当使用pyinstaller生成el .exe时,它会抛出异常ImportError No moduled named module。
我尝试在pyinstaller的spec文件上的hidden-import中导入module.pyd,然后我收到错误,没有模块导入请求,请求在module.pyd上使用。
如果我已经安装了请求,那么为什么cython或pyinstaller没有导入模块或者什么是真正的问题?
答案 0 :(得分:0)
在用于创建lib的pyInit文件中,您可以设置要链接到的项目的库和库目录。例如
extensions = [
Extension(name="xxxx",sources=["xxx.pyx"],
libraries=["myclass"],
library_dirs=["/src/libdirectory"],
language="c++",),
]
这告诉cython链接器查找库。有一点需要注意,对于gnu编译器,如果希望链接器看到“myclass”,请确保将库命名为“libmyclass.so”
答案 1 :(得分:0)
好的,有些事情没有看到太多代码......
你真的希望扩展名是" src.libs.myGridLayout" ?意思是,你想做什么
import src.libs.myGridLayout
你的python文件中的?如果这是你的设计,那就是你的设计。名称是实际扩展名。
library_dir是寻找"外部"的地方。库。 (比如Windows.lib)Cython会为你编写的代码链接你项目的正确库,但对于其他任何东西,这就是你放在"库" 。目录
BTW," namelibrary.lib" ?如果它是你想在yoru项目中使用的库,那么你只需添加找到该库的路径,然后添加" namelibrary"到图书馆。
仅仅看一下你为cython编写这个扩展的方式,我强烈建议你慢一点,阅读/学习更多关于如何设置项目,以及如何使用这些扩展。祝好运! :)