在Travis CI上冻结Python应用程序
我正试图通过Github项目冻结Travis CI中的Python应用程序。我设法通过Travis中的在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
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模块,而这与您试图实现的目标无关:)