使用easy_install在Cocoa应用程序中捆绑python工具

我的Cocoa应用程序需要使用easy_install在用户系统上安装Python命令行工具.理想情况下,我想将一个bash文件与我的应用程序捆绑在一起然后运行.但据我所知这是不可能的,因为软件包安装在Python的“site-packages”目录中.

有没有办法创建这些文件的“包”?
如果没有,我应该如何运行easy_install安装?我想用我的应用程序捆绑一个.pkg文件,然后我可以在必要时打开它,但是我无法让这个安装包只运行脚本.

如果你有关于如何解决这个问题的想法,我会很高兴.

亲切的问候,
法比安

解决方法:

如果您可以随应用程序一起提供命令行工具,并且只有您的应用程序将使用它(而不是用户直接使用的工具),您可以直接在您的应用程序中包含和使用命令行工具,如下所示:

>将命令行工具存储在应用程序目录中的某个位置.
>设置Python模块搜索路径,以便它查找所需的模块.

可以使用相对于Python程序设置Python模块搜索路径

import sys
import os.path as path

sys.path.append(path.join(path.dirname(__file__),
    '<relative path between this program and the command line tool module>'))

import <command line tool module>

相对路径可以使用..父目录约定编写:这适用于Unix(包括Mac OS X)和Windows.

PS:如果许多程序需要访问命令行工具模块,您可以:

>将上述代码放在每个程序中,
>或者,如果你想要更容易维护的东西,你可以创建自己的模块my_runner并将其用作代理:你的模块my_runner将导入所有原始的运行器函数,如下所示:

06001

然后,您可以通过代理在所有程序中使用原始运行程序模块,只需执行您自己的my_runnermodule的“正常”导入:

06002

PPS:如果您想要一个更健壮的路径,即使工作目录稍后更改也可以工作,可以将潜在的本地路径转换为绝对路径:path.join(path.abspath(path.dirname(__ file __)), ….

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...