python第三方库pyinstaller_关于python:将第三方库添加到使用cython编译的pyd文件中,并使用pyinstaller包装在exe上...

我正在使用cython从py到pyd编译一个文件,我按如下方式创建setup.py:

from setuptools import setup

from Cython.Build import cythonize

它在main.py中导入,如下所示:

from src.lib.module import myclass

当我使用命令" python main.py"运行我的应用程序时,这是可行的,但是当运行由pyinstaller生成的el .exe时,它将引发异常ImportError没有模块命名模块。

我尝试在pyinstaller的spec文件上的hidden-import上导入module.pyd,然后收到一个错误,没有模块导入请求,该请求在module.pyd上使用。

如果我已经安装了请求,那么为什么cython或pyinstaller无法导入模块,或者真正的问题是什么?

好吧,几件事没看到太多代码...

您是否真的希望扩展名是" src.libs.myGridLayout"?意思是,你想做什么

import src.libs.myGridLayout

在您的python文件中?如果这是您的设计,那就是您的工作。名称是实际扩展名。

在library_dir中可以找到"外部"库。 (例如Windows.lib),Cython会为您的项目链接适合您编写的代码的库,但对于其他任何事情,这就是您放入"库"目录中的内容。

顺便说一句," namelibrary.lib"是什么?如果它是您要在yoru项目中使用的库,则只需将路径添加到找到该库的位置,然后将" namelibrary"添加到库中。

仅查看您为cython编写此扩展的方式,我强烈建议您慢一点,并阅读/学习更多有关如何设置项目以及如何使用这些扩展的知识。祝好运! :)

目前,我已使用pyinstaller挂钩解决了我的问题,请稍后再尝试扩展。作为外部扩展,我有一个请求,但是大多数导入都是我创建的内部库,谢谢您的帮助。

在创建库的pyInit文件中,可以设置要链接到的项目的库和库目录。例如

extensions = [

Extension(name="xxxx",sources=["xxx.pyx"],

libraries=["myclass"],

library_dirs=["/src/libdirectory"],

language="c++",),

]

这告诉cython链接程序寻找该库。需要注意的一件事,对于gnu编译器,如果希望链接器看到" myclass",请确保将库命名为" libmyclass.so"

Jeje,我有点迷茫,1.-我在Windows上工作,我将自己的库命名为" my_module.py",以及它们的类Module,这会给我Windows带来麻烦吗? 2.-我的目录结构更多:mainfolder-> main.py,setup.py mainfolder-> libs-> __ init__.py,my_module.py与pyInit引用libs文件夹上的main.py或init.py或setup.py

还有更多,让我很伤心,但我不明白您传递给我的代码,我查看了一些文档并返回。

这仅表示.exe链接程序找不到您的模块。如果您像我向您展示的那样创建上面的扩展名(请参阅有关扩展名的cython文档),则可以告诉exe在哪里找到您的库。您还有另外2个选择,可以将模块放置到.exe可以看到它的地方

或将目录添加到Windows PATH

我尝试使用扩展名并得到错误,LNK1181:无法打开输入文件namelibrary.lib,我使用的代码是:Extension(src.libs.MyGridLayout, sources=["src\\libs\\MyGridLayout.py"], library_dirs=["src\\libs\\checkbox"], libraries=["checkbox"])。我的库MyGridLayout make from src.libs.checkbox import MyCheckBox模块MyGridLayout和复选框都位于mainfolder-> src-> libs->模块中,而setup.py位于mainfolder上。

好的,有两件事(没有看到太多代码)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值