与windows一样,我用pyinstaller进行程序打包,只是ubuntu下的命令更为严谨,大小写都会导致出错,在终端导入pyinstaller后,即可进行程序打包。

首先生成spec : pyi-makespec -w demotest.py, 就会先生成 test.spec(当前目录下)

#-*- mode: python ; coding: utf-8 -*-




block_cipher= None
= Analysis(['demotest.py'],


        
pathex=['/home/shuo/SSD_Tensorflow_master'],

         binaries=[],

         datas=[],

         hiddenimports=[],

         hookspath=[],

         runtime_hooks=[],

         excludes=[],

         win_no_prefer_redirects=False,

         win_private_assemblies=False,

         cipher=block_cipher,

         noarchive=False)

pyz= PYZ(a.pure, a.zipped_data,  cipher=block_cipher)


       

exe= EXE(pyz,a.scripts, [],

     exclude_binaries=True,

      name='demotest',

      debug=False,

      bootloader_ignore_signals=False,

      strip=False,

      upx=True,

      console=True )

      coll= COLLECT(exe,


      a.binaries,

      a.zipfiles,

      a.datas,

      strip=False,

      upx=True,

      upx_exclude=[],

      name='demotest')

然后进行打包

打包完成后,在文件界面打开终端输入./demotest,即可执行

出现以下错误:

错误1:

ImportError:Unable to import required dependencies: numpy: No module named 'numpy.random.common'

解决方法:

(1)找到numpy,将整个包全部覆盖到打包文件夹,问题解决

(2)由于numpy是我用pycharm装的,所以为了排除这个问题,我在pycharm中卸载了这个包,然后通过终端重新安装,安装结束后还是报错,然后在网上查找问题,后来发现可能是版本有问题,参考链接如下:,https://stackoverflow.com/questions/57264427/in-pyinstaller-why-wont-numpy-random-common-load-as-a-module, 于是按照上述方法,降级后,问题解决。

错误2:

tensorflow.python.framework.errors_impl.NotFoundError: tensorflow/contrib/util/tensorflow/contrib/rnn/python/ops/_gru_ops.so: cannot open shared object file: No such file or directory

解决方法:

(1)参考了以下博客:,https://codeday.me/bug/20190710/1427030.html, 试着改调用的程序,操作一波后,这个不在报错,但是报另外一个os丢失的错误,于是这种方法果断放弃。

(2)由于这个问题属于系统调用问题,回想起之前自己电脑出问题的时候,无论怎么装插件,怎么改策略组都是于是无补的时候,这是重装系统是一个好的选择,方便快捷。于是我就将tensorflow果断升级到最新版本,最后接着生成在运行,可是结果却并不好,出现另一个os报错,最新版本不行,于是我就降级,降级也不需要什么特殊指令,也不需要删除旧版本,直接“pip install tensorflow==你需要的版本”,在终端运行后,会开始下载相应的版本,由于网络问题,国外有可能网速慢,所以下载失败后再来一次,实在不行多下几次就好,这个安装完毕后,系统会自动卸载之前的版本。我试了三次,因为我的windows里面的就是1.4,从1.4-1.6一个一个试,最终确定1.6。可能有人会问,tensorflow不是既有CPU版本又有gpu版本吗,万一下载成了gpu的咋办,毕竟是虚拟机调用不了GPU,我们可以去清华大学镜像源里面找,这里附上链接:https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/cpu/, 我用的是tensorflow-1.6.0rc0-CP36-cp36m-linux_x86_64.whl,这里面cp36代表python3.6,因为tensorflow要和python对应,版本不对应,是会报错的。进过一波操作后,运行报错:AttributeError: module ‘enum’ has no
attribute ‘IntFlag’,后来发现只要卸载那个包就行,因为它和python里面的包冲突了。然后接着运行,虽然报错,但是这个报错让我看到了希望,因为报错的是我的打包文件夹的路径,这个路径只要缺东西,那我们找到相应的包,往里面塞就行。

经过操作后,努力果然没有白费,终于可以运行了。

附上截图:

虚拟机系统怎么重新打包成ios 虚拟机文件打包_tensorflow