在Travis CI上冻结Python应用程序

在Travis CI上冻结Python应用程序,python,c,makefile,rake,travis-ci,Python,C,Makefile,Rake,Travis Ci,我正试图通过Github项目冻结Travis CI中的Python应用程序。我设法通过Travis中的pip成功地调用了freeze.py实用程序的安装,但是当我尝试冻结Python程序时,它会运行,但不会生成构建可执行文件所需的C和Makefile 这是我的.travis.yml: language: python python: - "2.7" # Command to install dependencies install: "pip install freeze" # Com

我正试图通过Github项目冻结Travis CI中的Python应用程序。我设法通过Travis中的
pip
成功地调用了
freeze.py
实用程序的安装,但是当我尝试冻结Python程序时,它会运行,但不会生成构建可执行文件所需的C和Makefile

这是我的
.travis.yml

language: python
python:
   - "2.7"

# Command to install dependencies
install: "pip install freeze"

# Command to build with `rake`
script: rake default
这是我的Rakefile:

#
# Rakefile to build standalone `secho` Unix-like executable program on Travis CI.
# To build on your own system; please use `make` instead.
#
freeze = "python /home/travis/virtualenv/python2.7/lib/python2.7/site-           packages/pip/commands/freeze.py"
io = "secho"

task :default => [:freeze, :compile]

task :freeze do
  sh "python #{io}.py python test output - OK"
  sh "#{freeze} #{io}.py" # This runs but there is no console output & nothing generated.
end

task :compile do
  sh "ls"
  sh "make -f Makefile"
  sh "strip #{io}"
  sh "rm -f Makefile *.o *.c"
  sh "./#{io} compiled test output - OK"
end

task :clean do
  sh "rm -f #{io}"
end

task :test do
  puts "dummy test"
end
只有在第一个任务
:freeze
中使用Python运行脚本才能成功完成。我做错了什么

非常感谢,

山姆


我想我知道这里发生了什么。也许您读到了其中的一个答案,它表明
freeze.py
存在于pip中的一个模块中,甚至不能作为脚本直接运行(您可以通过阅读它的源代码来确认这一点,源代码只包含一个类定义)

但我认为您需要的是Python源代码附带的
freeze.py
工具。据我所知,这不是正常安装的,只是源代码中包含的一个工具:


如果您正在寻找一种工具来将脚本冻结为独立的可执行文件,那么您可能需要研究类似或的东西。我认为Python中包含的冻结实用程序实际上已经不再维护或使用了。除了最近保持Python 3兼容性的工作之外。

我想我看到这里发生了什么。也许您读到了其中的一个答案,它表明
freeze.py
存在于pip中的一个模块中,甚至不能作为脚本直接运行(您可以通过阅读它的源代码来确认这一点,源代码只包含一个类定义)

但我认为您需要的是Python源代码附带的
freeze.py
工具。据我所知,这不是正常安装的,只是源代码中包含的一个工具:


如果您正在寻找一种工具来将脚本冻结为独立的可执行文件,那么您可能需要研究类似或的东西。我认为Python中包含的冻结实用程序实际上已经不再维护或使用了。除了最近保持Python 3兼容性的工作之外。

我有点困惑。作为依赖项使用pip安装的
freeze
包与“pip freeze”命令无关。
pip.commands.freeze
模块不能像您尝试的那样作为脚本运行。要运行
pip freeze
只需运行
sh“pip freeze”
。但我不认为你想这么做。我有点困惑。作为依赖项使用pip安装的
freeze
包与“pip freeze”命令无关。
pip.commands.freeze
模块不能像您尝试的那样作为脚本运行。要运行
pip freeze
只需运行
sh“pip freeze”
。但我不认为你想这么做。谢谢你的帮助。我只是想运行
freeze.py
实用程序来生成必要的C代码和
Makefile
,以便调用编译器。我可以通过
pip
安装
cx\u Freeze
,然后运行它吗?那也行。这取决于你到底想完成什么,但例如,cx_Freeze并不输出C文件或Makefile,它只输出一个二进制可执行文件,而不需要你编译它。它还(默认情况下)生成一个包含所有Python模块的.zip文件,尽管细节可以调整。看一下文档,看看它是否满足您的需要。只需要可执行文件,我也需要。谢谢我可以在Travis下安装它吗?应该能够--
pip install cx_Freeze
原则上应该可以工作。继续阅读文档并尝试几次--如果可以的话,我建议在尝试在Travis中工作之前先尝试在本地工作。有许多关于将Python脚本捆绑为可执行文件的指南,以及许多与之相关的问题。但就目前情况而言,您的具体问题是您试图运行一个不可执行的Python模块,而这与您试图完成的任务无关:)谢谢您的帮助。我只是想运行
freeze.py
实用程序来生成必要的C代码和
Makefile
,以便调用编译器。我可以通过
pip
安装
cx\u Freeze
,然后运行它吗?那也行。这取决于你到底想完成什么,但例如,cx_Freeze并不输出C文件或Makefile,它只输出一个二进制可执行文件,而不需要你编译它。它还(默认情况下)生成一个包含所有Python模块的.zip文件,尽管细节可以调整。看一下文档,看看它是否满足您的需要。只需要可执行文件,我也需要。谢谢我可以在Travis下安装它吗?应该能够--
pip install cx_Freeze
原则上应该可以工作。继续阅读文档并尝试几次--如果可以的话,我建议在尝试在Travis中工作之前先尝试在本地工作。有许多关于将Python脚本捆绑为可执行文件的指南,以及许多与之相关的问题。但就目前情况而言,您的具体问题是您试图运行一个不可执行的Python模块,而这与您试图实现的目标无关:)