1

最开始我直接把在Windows上打包的run.exe文件上传到Linux以为可以直接用了。但是./run后报错。百度后知道,Windows上的程序不能在Linux上运行

Linux下文件是否可执行可后缀没有关系,只和权限有关系,靠的是文件本身的权限。想要执行就  chmod 755 filename 改变文件权限

windows和linux的二进制文件不能兼容,楼主检查下吧,不能在linux下运行windows的程序.一定要在linux下运行,需要安装wine

Linux默认支持ELF格式二进制文件,Windows的PE格式运行不了的。

2 python用pyinstaller打包后,运行程序报错"pkg_resources.DistributionNotFound"的解决办法

最后一句话是重点

pkg_resources.DistributionNotFound:the "APScheduler" distribution was not found....

这里明明已经打包好了exe文件,也没有报错。但是运行exe时候,却弹出这个界面一闪而过。

之后再查阅了pyinstaller的官方文档后,找到了解决办法

在目标文件目录下创建一个hook-ctypes.macholib.py文件:

里面的内容如下:

# -*- coding: utf-8 -*-

from PyInstaller.utils.hooks import copy_metadata

datas = copy_metadata('apscheduler')

然后打包的时候,多加一句--additional-hooks-dir=,如下所示:

pyinstaller -F yourfile.py --additional-hooks-dir=

这样修改以后,打包出来的exe文件就能够正常使用了。

3 APScheduler: LookupError: No trigger by the name “interval” was found

环境

python: 2.6.6

PyInstaller: 2.1 
APScheduler: 开始是3.0.1,后来是3.0.5

问题一

问题描述

以前在别的机器上开发的python程序(python2.7),在新的机器上运行时报错

LookupError: No trigger by the name "interval" was found

程序代码

import os, time
from datetime import datetime
from apscheduler.schedulers.background import BackgroundScheduler def myjob():
print('myjob: %s' % datetime.now())
time.sleep(5) if __name__ == '__main__':
scheduler = BackgroundScheduler()
scheduler.add_job(myjob, 'interval', seconds=1)
scheduler.start() try:
while True:
time.sleep(5)
except (KeyboardInterrupt, SystemExit):
scheduler.shutdown()

原因

是由于低版本的setuptools导致

解决办法

sudo pip install --upgrade setuptools
sudo pip install --ignore-installed apscheduler

然后再次运行上面的python代码,问题解决。

问题二

问题描述

第一个问题解决后,在运行使用pyinstaller打包生成的可执行文件的时候报错

Traceback (most recent call last):
File "<string>", line 11, in <module>
File ".../out00-PYZ.pyz/apscheduler.schedulers.base", line 330, in add_job
File ".../out00-PYZ.pyz/apscheduler.schedulers.base", line 782, in _create_trigger
File ".../out00-PYZ.pyz/apscheduler.schedulers.base", line 766, in _create_plugin_instance
LookupError: No trigger by the name "interval" was found

原因

感觉好像是由于pyinstaller打包的时候使用了错误版本的APScheduler。(不确定)???

解决办法

不要在add_job方法中使用“’interval’, seconds=1”做trigger,而是先创建一个IntervalTrigger对象,然后add_job的时候使用这个对象,即:

修改原来代码中

    scheduler.add_job(myjob, 'interval', seconds=1)

    trigger = IntervalTrigger(seconds=1)
scheduler.add_job(myjob, trigger)

完整代码如下

def myjob():
print('myjob: %s' % datetime.now())
time.sleep(5) if __name__ == '__main__':
scheduler = BackgroundScheduler()
trigger = IntervalTrigger(seconds=1)
scheduler.add_job(myjob, trigger)
scheduler.start() try:
while True:
time.sleep(5)
except (KeyboardInterrupt, SystemExit):
scheduler.shutdown()

然后用PyInstaller重新打包,此时再运行可执行文件的时候就不会报错了。

重点:因为用到了IntervalTrigger,所以需要从包里导入,然后我找了这么一个帖子http://blog.csdn.net/mx472756841/article/details/51751616

用了这里面的如下代码

# 示例代码
from apscheduler.triggers.interval import IngervalTrigger
# 使用字符串方式
scheduler.add_job(interval_tick,'interval',seconds=4,minutes=2,
start_date=datetime.now()+dt.timedelta(seconds=120),
end_date=datetime.now()+dt.timedelta(seconds=360))
# 使用IntervalTrigger指定时间运行
trigger = IntervalTrigger(seconds=60,
start_date=datetime.now()+dt.timedelta(seconds=60),
end_date=datetime.now() + dt.timedelta(seconds=120))
scheduler.add_job(date_tick, trigger)

但是他这里import是错误的。害我找了半天,后来用在在python自带的用户图形界面中import apschedluer 后用dir() 一步一步找到正确的名字,然后才运行通过的。

4 打包成可执行文件后就需要连接本地的数据库(XAMPP上的MySQL)

同时也是解决Navicat 报错:1130-host ... is not allowed to connect to this MySql server,MySQL不允许从远程访问的方法 (http://www.cnblogs.com/shyy/archive/2012/03/30/2453034.html).

https://jingyan.baidu.com/article/d169e186467a44436611d8b1.html

可以进入shell后操作(如果host为%号,那么就是所有主机都可以登录,包括远程主机.)

musql -uroot

select host,password,user,from user;

update user  set host = "%" where  host = "127.0.0.1"

相关文档(http://blog.csdn.net/xiaomengh/article/details/48706149)

greenlet.h:8:20: 致命错误: Python.h:没有那个文件或目录

解决方法是安装python-dev,这是Python的头文件和静态库包:

sudo apt-get install python-dev 

但还是不行,TODO

TODO

python打包成可执行文件的更多相关文章

  1. 将Python打包成可执行文件exe的心路历程

    导言: 我们有时候需要将做好的Python程序打包成为一个exe , 方便我们使用,查找了资料发现 pyinstaller .py2exe,最后还是选择的pyinstaller,用的时候踩过了挺多的坑 ...

  2. 将Python脚本打包成可执行文件

    Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安 ...

  3. Python打包成exe可执行文件

    Python打包成exe可执行文件 安装pyinstaller pyinstaller打包机制 Pyinstaller打包exe 总结命令 可能会碰到的一些常见问题 我们开发的脚本一般都会用到一些第三 ...

  4. python打包生成可执行文件教程

    python打包生成可执行文件教程 安装环境: 1.打开命令行窗口,输入命令:pip install pyinstaller ,等待下载结束.示例: 2.下载结束后,测试是否成功安装,输入命令:pyi ...

  5. Python打包成exe,文件太大问题解决办法

    Python打包成exe,文件太大问题解决办法 原因 解决办法 具体步骤 情况一:初次打包 情况二:再次打包 原因 由于使用pyinstaller打包.py文件时,会把很多已安装的无关库同时打包进去, ...

  6. python打包成exe

    目前有三种方法可以实现python打包成exe,分别为 py2exe Pyinstaller cx_Freeze 其中没有一个是完美的 1.py2exe的话不支持egg类型的python库 2.Pyi ...

  7. py库:把python打包成exe文件(pyinstaller)

    http://blog.csdn.net/be_quiet_endeavor/article/details/73929077 用Pyinstaller把Python3.4程序打包成可执行文件exe ...

  8. 关于python打包成exe的一点经验之谈

    我经常用python写些脚本什么的,有时候脚本写完以后,每次运行都得在IDE打开在运行,很麻烦,所以经常将python编译成exe.SO...有了一点经验,在这和大家分享一下.      python ...

  9. Python打包成exe,pyc

    D:\mypython\path\ C:\Python27\Scripts\pyinstaller.exe -w mypython.py # Python打包成exe D:\mypython\path ...

随机推荐

  1. 2019-2-27-win10-uwp-去掉-Flyout-边框

    title author date CreateTime categories win10 uwp 去掉 Flyout 边框 lindexi 2019-02-27 17:48:46 +0800 201 ...

  2. Winform C#关于utf8编码问题

    public string SendDataByPost(string param, string Url) { try { HttpWebRequest request = (HttpWebRequ ...

  3. Python10_代码规范和可读性

    养成好的编程习惯和方法对提升代码可读性至关重要. 1.类.模块.包:不要用下划线,命名要简短 2.类:命名最好以大写开头 3.模块.包:用小写单词 4.变量.函数.方法:可以用下划线提高可读性,尽量都 ...

  4. python文件的读写追加等操作

    # encoding:utf-8 # 文件读取操作 fp=open("E:\\file.txt","r",encoding="utf-8" ...

  5. web.config修改文件修改上传大小

    老是要修改上传文件大小的限制,先记在这里. <httpRuntime maxRequestLength= "1048576 " //最大长度 executionTimeout ...

  6. C# event 事件

    事件第二篇:https://www.cnblogs.com/FavoriteMango/p/11731485.html 曾经面试碰到一道设计题: 现有一个人,一群鸟,人有一把手枪,当人开枪时,所有的鸟 ...

  7. $ CometOJ-Contest\#11\ D$ $Kruscal$重构树

    正解:$Kruscal$重构树 解题报告: 传送门$QwQ$ 发现一个图上搞就很麻烦,考虑变为生成树达到原有效果. 因为在询问的时候是要求走到的点编号尽量小,发现这个时候点的编号就成为限制了,于是不难 ...

  8. 前端-jQuery介绍

    目录 jQuery介绍 jQuery的优势 jQuery内容: jQuery版本 jQuery对象 jQuery基础语法 查找标签 基本选择器 层级选择器: 基本筛选器: 属性选择器: 表单筛选器: ...

  9. .NET Core 3.1之深入源码理解HealthCheck(二)

    写在前面 前文讨论了HealthCheck的理论部分,本文将讨论有关HealthCheck的应用内容. 可以监视内存.磁盘和其他物理服务器资源的使用情况来了解是否处于正常状态. 运行状况检查可以测试应 ...

  10. 小小知识点(三十六)EXCEL闪退解决办法

    1. 首先打开控制面板,从系统和安全中选择管理工具打开Windows事件查看器 2. 点击展开Windows日志-->应用程序.然后在右侧列表中找到出现的错误(点击后,查看下面的信息就知道是不是 ...