首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在IronWorker中捆绑Python依赖项?

如何在IronWorker中捆绑Python依赖项?
EN

Stack Overflow用户
提问于 2012-11-08 17:14:32
回答 2查看 1.1K关注 0票数 9

我正在编写一个简单的IronWorker in Python来使用AWS API进行一些工作。

为此,我想使用通过PiPy分发的boto library。默认情况下,IronWorker运行时环境中不安装boto库。

如何将boto库依赖项与IronWorker代码捆绑在一起?

理想情况下,我希望我可以使用类似gem dependancy bundling available for Ruby IronWorkers的东西-即在myRuby.worker中指定

代码语言:javascript
复制
gemfile '../Gemfile', 'common', 'worker' # merges gems from common and worker groups

Python Loggly sample中,我看到使用了hoover库:

代码语言:javascript
复制
#here we have to include hoover library with worker.
hoover_dir = os.path.dirname(hoover.__file__)
shutil.copytree(hoover_dir, worker_dir + '/loggly') #copy it to worker directory

然而,我看不到你在哪里/如何指定你想要的hoover库版本,或者从哪里下载它。

在Python IronWorkers中使用第三方库的官方/正确方式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-09 03:20:09

编辑自从这个答案被编写并被接受以来,我们已经对我们的工具集做了一些工作。answer from my colleague below是未来的推荐课程。/edit

我为IronWorker编写了Python客户端库。我也受雇于Iron.io。

如果您使用的是Python客户端库,最简单(也是推荐的)方法就是复制库的已安装文件夹,并在上传包时将其包含在内。这就是上面的Python Loggly示例所做的事情。正如您所说的,它没有指定版本或从何处下载该库,因为它并不关心。它只需要在你的系统上安装一个并使用它。当你在你的本地机器上输入"import boto“时,你得到的任何东西都会被上传。

另一种选择是使用我们的CLI通过.worker file上传您的员工。

要做到这一点,你需要做的是:

创建botoworker.worker文件:

代码语言:javascript
复制
runtime "binary"
build 'pip install --install-option="--prefix=`pwd`/pips" boto'
file 'botoworker.py'
exec "botoworker.sh"

第二行是将运行以安装依赖项的pip命令。您可以像从命令行运行任何pip命令一样对其进行修改。它将在“构建”阶段对worker执行该命令,因此它只执行一次,而不是每次运行任务时都执行。

第三行应该更改为您想要运行的Python文件--这是您的Python工作文件。下面是我们用来测试的代码:

代码语言:javascript
复制
import boto

如果您将其另存为botoworker.py,则上面的代码无需任何修改即可工作。:)

第四行是一个shell脚本,它将实际运行您的worker。我已经包括了我们在下面使用的那个。只需将其另存为botoworker.sh,您就不必担心修改上面的.worker文件。

代码语言:javascript
复制
PYTHONPATH="$HOME/pips/lib/python2.7/site-packages:$PYTHONPATH" python botoworker.py "$@"

您会注意到它引用了您的Python文件--如果您没有将您的Python文件命名为botoworker.py,请记住在这里也将其更改。所要做的就是将PYTHONPATH设置为包含已安装的库,然后运行Python文件。

要上传它,只需确保你已经安装了命令行工具(gem install iron_worker_ng,确保你的Ruby1.9.3或更高版本),然后在你的shell中运行"iron_worker upload botoworker“,从你的botoworker.worker文件所在的目录。

希望这能有所帮助!

票数 6
EN

Stack Overflow用户

发布于 2013-01-11 20:58:13

更新的iron_worker版本具有对pip命令的本机支持。因此,您需要:

代码语言:javascript
复制
runtime "python"
exec "something.py"

pip "boto"
pip "someotherpip"

full_remote_build true
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13285901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档