2

我正在运行带有 x86-64 处理器的 Ubuntu 的计算机上编写一个程序,该程序需要在运行带有 x86 处理器的 OS X 的计算机上运行。我可能无法进行任何类型的库安装,所以 venv 几乎是我所知道的唯一选择。

我怎样才能使一个针对该平台的目标?

如果我不能,是否有更好的方法将库与程序一起提供?

4

2 回答 2

4

Virtualenvs不是一种打包机制。virtualenv 没有理由离开创建它的计算机。它不起作用,virtualenv 100% 特定于您的操作系统、CPU 架构、Python 版本等。

有许多包装解决方案。旧的并且仍然是当前的方法是在目标机器上指定依赖关系setup.py,并setup.py install在目标机器上运行。请注意,这可能发生在 virtualenv 中,您只需创建 virtualenv 并在其中运行 setup.py。virtualenv 和venv3.3 中的标准库都提供了在 virtualenv 创建后自动执行此操作的方法。

如果您绝对必须创建二进制发行版(例如,因为您需要一个扩展模块而最终用户没有编译器),您需要一个 egg 或 wheel 或 .py 到二进制转换器之一(py2exe、PyInstaller , cx_Freeze 等)。您将需要访问 OS X 机器来创建它。至少轮子和鸡蛋通常都是安装好的,所以使用它们不会为你省去任何麻烦。那是因为它们是二进制分发的格式,它们的主要目的是将构建步骤从最终用户推送给开发人员,而不是删除安装步骤。

总结:只需创建一个脚本,它会创建一个 virtualenv 并安装您的应用程序以及所需的库。

于 2013-07-09T17:19:38.007 回答
0

你不能这样做,因为你在 Ubuntu 上使用的 python 可执行文件不会在 OS X 上运行,即使架构是相同的。

如果您尝试在不安装的情况下分发 Python 程序,则可以查看PyInstaller 之类的东西。您仍然需要访问运行 OS X 的机器来生成应用程序包,但您应该能够将所有内容打包到一个 .app 包中,该包可以像标准 OS X 应用程序一样启动。

于 2013-07-09T17:14:16.780 回答