在Python中生成安装脚本时出错

2024-04-26 07:57:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下一个案子:

  1. 使用Python+PySide的桌面应用程序
  2. 要使用PYD文件吗(mycore.pyd公司)在我的申请中
  3. 在中有一个依赖项mycore.pyx公司文件到填充模块
    • 此填充模块已安装到系统中
  4. 我建造设置.py然后把PYX文件转换成PYD文件,我在应用程序中使用

我得到的是:

  • 一旦我在PyCharm=>;下运行我的应用程序,一切正常
  • 当我用PyInstaller方法构建应用程序并从cmd=>;运行应用程序时,我捕捉到一个错误“No named module Padding(requests etc)”

示例设置.py文件:

from distutils.core import setup
from Cython.Build import cythonize


extensions = ["mycore.pyx"]

setup(
    name='mycore',
    version='1.0',
    ext_modules=cythonize(extensions),
    #packages=['Padding'], - once tried => "error: package directory 'Padding' does not exist"
)
任何想法或建议都太好了!在

更新

也尝试了使用setup_tools的变体,也没有成功:

^{pr2}$

Tags: 模块文件frompyimportgt应用程序setup
3条回答

这是一个设置.py(https://github.com/robintiwari/django-me/blob/master/setup.py)我最近创建的文件,该文件工作正常,并且遇到类似问题,我同意使用@Sanjusetuptools.find_包(). 它为我解决了这个问题。在

要求PyInstaller在构建过程中包含所需的模块。似乎最简单的方法是使用^{}参数:

hidden-import=modulename
Name an imported Python module that is not visible in your code. The module will be included as if it was named in an import statement. This option can be given more than once.

因此,请在构建应用程序时添加以下参数:

hidden-import=Padding


编辑:

尝试在一个单独的*.py文件中而不是*.pyx\*.pyd文件中导入所有必需的模块(触发错误)。这是一个丑陋的解决办法,但可能会解决这个问题。在

考虑在这个场景中使用__init__.py文件。在

我猜问题是PyInstaller看不到由cython代码导入的包,所以它没有将其包含在bundles应用程序中。在

必须有一种方法告诉PyInstaller包含填充包。在

我不能告诉你怎么从来没有使用过它,但是这就是你如何处理py2exe和py2app。在

相关问题 更多 >