我正在尝试冻结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支持。
答案 0 :(得分:0)
我在教程
中运行py2exe和esky时遇到了问题我在我的项目中使用cx冻结,我没有遇到任何问题。
它还支持python3,linux和mac,所以我建议你去试试吧。
答案 1 :(得分:0)
最终,我们没有找到发生故障的原因,但我们确实发现了重要的一点,我们改变了环境以解决问题。
我们的构建机器对开发负有双重责任。当然,这不是最好的想法,它可能是为该开发安装的许多许多软件包中的一个,这会导致问题。
因此,我们从一个简单的Windows安装开始,只安装了实际执行构建所需的最少数量的软件包。这似乎已经成功了。
答案 2 :(得分:0)
我重新发现了此问题的解决方法。错误消息具有误导性-调试后,我发现实际错误是由esky在打包操作期间在celery.py顶部添加一些行引起的。这些行位于contains
上方,从而导致以下错误:
from __future__ import absolute_import, unicode_literals
要解决:
编辑SyntaxError: from __future__ imports must occur at the beginning of the file
并从文件顶部删除所有注释和空白行。