1

我正在尝试冻结一个 Python 应用程序和 Celery,并与 esky 打包以提供更新功能。我需要将 Celery 冻结,以便它可以看到第一个可执行文件中的模块,该可执行文件也将出现在 py2exe 创建的 library.zip 文件中。

问题是我不能让 Celery 和 esky 一起冷冻。这是我用来尝试找到解决问题的解决方案的最低限度的、精简的 setup.py 文件:

from esky import bdist_esky
from distutils.core import setup

setup(name='ColdCelery',
      scripts=['C:\\Python27\\Lib\\site-packages\\celery\\bin\\celery.py'],
      options = {
          'bdist_esky':{
              'freezer_module': 'py2exe',
          }
      }
)

当我运行以下命令时:

python setup.py bdist_esky

我收到以下错误:

running bdist_esky
running build_scripts
*** searching for required modules *** 
error: c:\temp\tmpz5146o\scripts\celery.py: The process cannot access the file
because it is being used by another process

机器上没有可以使用 Celery 的正在运行的 Python 进程。我认为这是 py2exe 和 esky 之间的冲突,但不知道如何克服它。

我可以使用 py2exe 冻结 Celery,而无需引用 esky,但我需要能够在将来更新这个项目,所以 esky 支持是必须的。

4

3 回答 3

0

我在教程中运行 py2exe 和 esky 时遇到问题

我在我的项目中使用 cx freeze 并且我没有遇到任何问题。

它还支持 python3、linux 和 mac,所以我可以推荐尝试一下。

http://cx-freeze.readthedocs.org/en/latest/

于 2015-06-18T17:42:13.443 回答
0

最终,我们没有找到发生故障的原因,但我们确实抓住了一个重要点,我们改变了我们的环境来解决这个问题。

我们的构建机器为开发承担了双重职责。这当然不是最好的主意,它可能是为该开发安装的众多软件包之一,这会造成麻烦。

因此,我们从基本的 Windows 安装开始,只安装了实际执行构建所需的最少数量的包。这似乎成功了。

于 2017-02-09T02:58:23.797 回答
0

我重新发现了我们对这个问题的修复。错误信息具有误导性——调试后发现实际错误是esky在打包操作过程中在celery.py顶部添加了一些行引起的。这些行超出了from __future__ import absolute_import, unicode_literals导致以下错误的原因:

SyntaxError: from __future__ imports must occur at the beginning of the file

修理:

编辑C:\Python27\Lib\site-packages\celery\bin\celery.py并删除文件顶部的所有注释和空行。

于 2020-09-15T20:34:54.513 回答