在OS X中创建软件包安装程序 - 安装Python、NumPy和其他依赖项

7
我希望创建一个本地的 Mac OS X 包安装程序,包的创建并不是真正的问题,真正的问题是需要安装的依赖项;我需要安装 Python、NumPy 和 Matplotlib(仅当所需版本尚未安装时)。
我听说过 Package Maker 应用程序的负面评价,我已经阅读了一些资料,甚至找到了一个很好的教程,但它已经相当过时了。这是苹果公司的参考指南。
我想我必须使用每个项目提供的未编译源代码。
如果有可以创建官方 Python 安装程序的 PackageMaker 文件,那么看到这个文件确实会对我有所帮助,请告诉我在哪里可以找到它。
无论如何:
这样做的最佳方法是什么?对于这个目的,使用 PackageMaker 是愚蠢的吗?还有其他的文献可以帮助我吗?
额外信息:
什么是测试安装程序的最简单方法?

OS X已经预装了Python,所以可以尝试使用virtualenv+pip install组合,并将其包装在一个shell脚本中。 - Misha Akovantsev
1
Mac OS X自带的Python无法与Matplotlib兼容,您需要从Python.org进行全新安装。不管怎样,我会检查这两个选项。 - El Developer
我提到这个,是因为如果你已经默认安装了Python,你可以轻松地编写install.sh来安装virtualenv、pip等。哦,等等。即使没有默认的Python,你也可以做到这一点。 - Misha Akovantsev
1
在 Lion 的默认 Python 中安装 numpy、scipy 和 matplotlib 是可能的,但并不容易。我在上周末完成了这个过程,但我认为将它们全部打包在一起更明智。 - Brian B
你是否曾经查看过 Packages 应用程序,它可能可以满足你的需求?最终你是如何解决这个问题的? - MiB
显示剩余5条评论
4个回答

4
我假设您想安装提到的软件包是因为您正在开发Python应用程序。您是否看过PyInstaller? 它可以将Python程序转换为独立的可执行文件,在Windows,Linux,Mac OS X,Solaris和AIX下运行,因此您不必担心目标系统上安装了什么。
如果您使用PyInstaller,“额外”的部分会很容易。只需将生成的可执行文件复制到任何其他机器上,并通过执行它来测试它。

虽然这是一个解决方案(我不确定百分之百),但为了开发,我们的很多人都必须安装所有东西,他们通常会浪费很多时间来安装所有东西,这就是为什么我需要创建一个安装程序,如果有一些代码需要编辑或删除,他们可以自己操作。这是一个分发的解决方案,而不是开发的解决方案。感谢你的建议,Michael。 - El Developer
1
有没有一个Python包可以为macOS创建通用的pkg安装程序? - Royi

2

类似于/tmp/install.sh这样的东西:

cd ~
curl -C - -O http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.7.tar.gz

tar -xzf virtualenv-1.7.tar.gz
cd ./virtualenv-1.7
python setup.py install

cd ~
rm virtualenv-1.7.tar.gz
rm -rd ./virtualenv-1.7

virtualenv myenvfolder
source myenvfolder/bin/activate
easy_install pip 

pip install NumPy
pip install Matplotlib

然后:

chmod +x /tmp/install.sh;
/tmp/install.sh

你是在建议将此脚本添加到软件包安装器项目中吗?否则,我想避免在安装过程中与终端进行任何交互。这就是为什么我想使用软件包安装器。谢谢! - El Developer
旁注:通常依赖包(可通过pip安装)列在类似于“requirement.txt”的文件中,并添加到版本控制(git)中,任何安装程序脚本只需具有“ pip install -r <path_to> / requirement.txt ”。 - 0xc0de

1

也许你可以使用macports 二进制包 或者 二进制存档? 还有可能使用 fabric 或 puppet在OSX上使用Puppet

Macports 的使用和 apt-get 一样简单,并且会处理所有依赖关系。默认情况下,macports 安装到 /opt/local,因此安装不会干扰苹果的安装。默认是从源代码编译。某些软件包很大并且有很多依赖项,因此编译需要很长时间并占用机器上的所有资源。如果你创建一个二进制存档,你只需要为每个机器架构/OSX版本编译一次。然后,你只需要安装 macports 并设置一个带有二进制存档的共享文件夹。使用 fabric 或 puppet 可以自动化构建和分发。

如果您在不久的将来发现需要使用pytable或numexpr,只需执行以下简单命令:sudo port install py26-tables。如果其他人也需要使用它,您可以制作二进制归档并将其放在共享目录中。


这些解决方案为什么比Mac的包安装程序更好?我愿意尝试新的解决方案。 - El Developer

-1

要安装Python的最新版本,您可以前往这里,并使用以下命令直接在终端中安装NumPy和matplotlib:

pip3 install matplotlib

pip3 install numpy

这并没有回答问题,也不是他们所询问的内容。 - Eric Aya
他说问题不在于软件包,而是安装依赖项(python、numpy和matplotlib),这就是我的答案。 - JPhay0001
他说问题不在于软件包,而是在于安装依赖项(python、numpy和matplotlib),这就是我回答的内容。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接