加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用PEX使用pandas打包python脚本

发布时间:2020-12-20 13:08:13 所属栏目:Python 来源:网络整理
导读:我有一个简单的 python脚本依赖于熊猫.我需要用pex打包它,所以它没有依赖安装就执行了. import sysimport csv import argparseimport pandas as pd class myLogic(): def __init__(self): pass def loadData(self,data_file): return pd.read_csv(data_file,
我有一个简单的 python脚本依赖于熊猫.我需要用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(switch for script)打包:

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

解决方法

到目前为止,唯一对我有用的选择是创建一个包含px的pex解释器,然后使用python脚本运送它.这可以按如下方式完成:

pex pandas -o my_interpreter.pex

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读