【问题标题】:Package python script with pandas using PEX使用 PEX 将 python 脚本与 pandas 打包
【发布时间】:2015-10-27 13:01:51
【问题描述】:

我有一个简单的 python 脚本,它依赖于 pandas。我需要用 pex 打包它,这样它就可以在没有依赖安装的情况下执行。

import sys
import csv 
import argparse
import pandas as pd 

class myLogic():
    def __init__(self):
        pass         

    def loadData(self, data_file):
        return pd.read_csv(data_file, delimiter="|")

    #command line interaction interface 
    def processInputArguments(self,args):

        parser = argparse.ArgumentParser(description="my logic")

        #transactions file name 
        parser.add_argument('-td',
                            '--data',
                            type=str,
                            dest='data',
                            help='data file location'
                            )       


        options = parser.parse_args(args)
        return vars(options)


    def main(self):
        options = self.processInputArguments(sys.argv[1:])

        data_file = options["data"]

        data = self.loadData(data_file)
        print data.head()


if __name__ == '__main__':
    ml = myLogic()
    ml.main()

我正在尝试使用 pex 来执行此操作,因此我执行了以下操作:

pex pandas -e myprogram.myLogic:main -o test1.pex 

但是在运行生成的 pex 文件时出现此错误:

Traceback (most recent call last):
  File ".bootstrap/_pex/pex.py", line 317, in execute
  File ".bootstrap/_pex/pex.py", line 250, in _wrap_coverage
  File ".bootstrap/_pex/pex.py", line 282, in _wrap_profiling
  File ".bootstrap/_pex/pex.py", line 360, in _execute
  File ".bootstrap/_pex/pex.py", line 418, in execute_entry
  File ".bootstrap/_pex/pex.py", line 435, in execute_pkg_resources
  File ".bootstrap/pkg_resources.py", line 2088, in load
ImportError: No module named myLogic

我还尝试使用以下命令使用 -c(切换脚本)进行打包:

pex pandas -c myprogram.py -o test2.pex

但也报错:

Traceback (most recent call last):
  File "/usr/local/bin/pex", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/pex/bin/pex.py", line 509, in main
    pex_builder = build_pex(reqs, options, resolver_options_builder)
  File "/usr/local/lib/python2.7/dist-packages/pex/bin/pex.py", line 486, in build_pex
    pex_builder.set_script(options.script)
  File "/usr/local/lib/python2.7/dist-packages/pex/pex_builder.py", line 214, in set_script
    script, ', '.join(self._distributions)))
TypeError: sequence item 0: expected string, DistInfoDistribution found

【问题讨论】:

    标签: python pex


    【解决方案1】:

    到目前为止,唯一对我有用的选项是使用 pex 创建一个包含 pandas 的解释器,然后将其与 python 脚本一起提供。这可以按如下方式完成:

    pex pandas -o my_interpreter.pex
    

    但是当构建python版本是UCS4并且要运行的版本是UCS2时,这会失败

    【讨论】:

      猜你喜欢
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 2013-11-06
      • 1970-01-01
      • 2018-03-01
      • 2021-01-17
      相关资源
      最近更新 更多