标签: py2app

是否可以在Mac App Store上部署Python应用程序?

Apple是否接受Python应用程序在新的Mac App Store上发布?

如果是这样,应该如何打包应用程序?py2app足够吗?别的什么?

python macos app-store py2app

48
推荐指数
4
解决办法
1万
查看次数

如何使用Python创建Mac OS X应用程序?

我想创建一个应该在Windows和Mac上运行的GUI应用程序.为此,我选择了Python.

问题出在Mac OS X上.

有两种工具可以为Mac生成".app":py2app和pyinstaller.

  1. py2app非常好,但它在包中添加了源代码.我不想与最终用户分享代码.
  2. Pyinstaller生成UNIX可执行文件,那么如何在Mac上运行它?我用这个可执行文件创建了一个包,但结果".app"无效.

问题是:

  1. 如何配置py2app以在可执行文件中包含源代码,以便最终用户无法访问我的程序?
  2. 如何将UNIX可执行文件转换为Mac".app"?
  3. 有没有办法用GCC编译Python代码?
  4. 在Windows中很简单,我从Python代码创建了一个"exe"文件,它可以工作.是否可以为Mac创建单个文件"app"?

PS我使用两台电脑(Windows和Mac),Python 2.7,wxPython,py2exe,py2app和pyinstaller.

另外,我检查了这些网站:

python macos wxpython py2app

32
推荐指数
5
解决办法
3万
查看次数

如何将tkinter窗口置于其他窗口之上?

我使用Python 2 TkinterPyObjC,然后我使用py2app.

程序工作正常,但是每当我打开程序时窗口都会以隐藏的方式启动,所以直到我点击停靠栏上的图标才能显示它.

有没有办法控制这个,让窗口在应用程序启动时打开的其他窗口的顶部?

只是为了澄清,它不必在应用程序运行的整个过程中处于顶部.我只是需要它在其他窗口启动时.

python pyobjc tkinter py2app osx-lion

19
推荐指数
5
解决办法
3万
查看次数

如何从具有 PySide2 GUI 的 python 脚本构建 mac os 应用程序?

语境:

我正在使用 PySide2 GUI 开发一个简单的 Python 应用程序。它目前在 Windows、Linux 和 Mac 上运行良好。在 Windows 上,我可以使用 PyInstaller 和 InnoSetup 来构建一个简单的安装程序。然后我尝试在 Mac 上做同样的事情。它很快就崩溃了,因为系统拒绝启动 PyInstaller 生成的命令或应用程序,因为它没有正确签名。因为我不是苹果开发者,所以我不能签署任何东西......

经过一番研究,我尝试了 py2app。我可以在这里更进一步。和

python setup.py py2app -A
Run Code Online (Sandbox Code Playgroud)

我可以创建一个可运行的应用程序。显然不能移植到不同的系统,因为它使用我的开发文件夹。如果我使用python setup.py py2app生成的程序无法启动,因为 py2app 没有复制所有必需的 Qt 东西。我试着将缺失的库一一添加,但最后系统找不到插件,我放弃了......

题:

有人可以帮助我使用 Qt GUI 将 python 脚本或包转换为 Mac 上的便携式应用程序吗?理想情况下,配方应该说明如何使用自定义应用程序图标,但这不是必需的。

参考:

  • 蟒蛇 3.8.5
  • macOS 10.15.7 卡特琳娜
  • PySide2 5.15.1
  • PyInstaller 4.0
  • py2app 0.22

由于我的真实包对于 SO 问题来说太大了,因此我将其缩减为最小的可重现示例:

from PySide3.QtWidgets import *
import sys


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        hello = QLabel('Hello', self)
        hello.move(50, 50)

def run(args):
    app …
Run Code Online (Sandbox Code Playgroud)

python macos pyinstaller py2app pyside2

17
推荐指数
1
解决办法
2377
查看次数

Python应用程序的简单许可保护

虽然有很多这样的问题,请跟我说,因为我认为我的不同......

我有一个5美元的Python应用程序,我使用py2exe,py2app和Linux的源代码分发.该应用程序具有一年的许可证,因此人们需要在一年后升级到更新的版本.我想添加一些简单的许可证保护来强制执行一年的限制.由于应用程序只有5美元,我不在乎它是否容易绕过.只是有一些东西会鼓励许多用户在一年后支付5美元升级而不是忽略许可.

注意:

  • 我希望源代码易于阅读,因此不会混淆
  • 我不想编译代码或SaaS
  • 我会考虑某种许可证密钥系统,如果它非常简单,但不要求任何复杂的东西

我的第一个想法是简单地记录安装日期(例如,使用wxConfig)并在一年后使用礼貌消息禁用软件以请升级.

有没有更好的解决方案呢?

python licensing py2exe py2app

13
推荐指数
1
解决办法
8753
查看次数

使用py2app制作的可执行文件是否包含其他终端脚本并运行它们?

所以我有一个很好的OS X的python应用程序.它运行一个外部终端脚本,我想在我的python应用程序中包含它.理想情况下,我能够运行py2app并将此脚本捆绑到可执行文件中,然后能够包含它并在我的代码的python部分中运行它.这可能吗?

提前致谢!

额外编辑:我正在使用的脚本已编译.我不能只看里面粘贴它.

python macos py2app

13
推荐指数
1
解决办法
1919
查看次数

py2app构建正常,但应用程序失败"_tkinter.TclError"(并且没有错误消息!)

我使用py2app 0.9Mac OSX Yosemite 10.10.1运行Python 3.4,从蟒蛇分布,并用Tcl 8.5.

在早期的尝试中,构建会失败,但快速搜索会显示这些问题的解决方案(即包括'packages':['tkinter', 'matplotlib']在OPTIONS中setup.py,并更改第49行MachOGraph.py:loader - > loader_path)

现在py2app完成构建,并在Alias模式下运行我的应用程序功能,但是当我在普通模式(python setup.py py2app)中构建时,生成的应用程序将无法打开,并且控制台显示以下回溯:

回溯(最近一次调用最后一次):文件"/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/ boot .py",第355行,在_run()文件"/ Users/ryankeenan /桌面/钓鱼/ gui_test/dist/deani.app/Contents/Resources/boot .py",第336行,在_run exec(编译(源,路径,'exec'),globals(),globals())文件"/用户/ ryankeenan /桌面/钓鱼/ gui_test/dist/deani.app/Contents/Resources/deani.py",第731行,在app = fishingapp()文件"/ Users/ryankeenan/Desktop/fishing/gui_test/dist/deani .app/Contents/Resources/deani.py",第536行,在init tk.Tk中.init(self,*args,**kwargs)文件"/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/lib/python3..py",第1851行,在init self.tk = _tkinter.create(screenName,baseName,className,interactive,wantobjects,useTk,sync,use)_tkinter.TclError

令人沮丧的是,它不会为"_tkinter.TclError"打印任何错误消息.我搜索了很多,没有找到任何解决方案或这个问题的复制品.我已经尝试构建各种基于tkinter的应用程序,它们都以同样的方式失败.

这是在第一次拨打tk.Tk时发生的.我的代码中的init(self,*args,**kwargs).

我的setup.py文件如下所示:

from setuptools import setup 
APP = ['deani.py'] 
DATA_FILES = [] 
OPTIONS = {'packages': ['tkinter','matplotlib'],'argv_emulation': True} 
setup( 
     app=APP, 
     data_files=DATA_FILES, …
Run Code Online (Sandbox Code Playgroud)

tkinter py2app python-3.x anaconda

13
推荐指数
1
解决办法
613
查看次数

构建Mac和Windows GUI应用程序

我打算为Mac和Windows构建一个GUI应用程序.我一直在研究技术选择,如语言,库和构建工具,这样我就可以在两个平台之间共享尽可能多的代码.

主要要求是:

  1. 符合Mac App Store的要求.
  2. Mac和Windows上的原生外观.
  3. 需要在Mac上调用Quartz Window Services,在Windows上调用Windows API.
  4. 使用SQLite存储和读取数据.

我的帖子的长度已经失控,所以我把我的问题作为摘要移到了顶部,而上下文更进一步.

问题

  1. 我倾向于使用Python来简化编程.这对我来说是正确的选择吗?如果不是为什么C++会更好?如果是这样,我究竟如何设置py2app和pyobjc来编译python并构建一个为GUI加载XIB的独立应用程序?
  2. 我是否正确,我不应该在Mac上使用跨平台GUI库,以获得更原生的界面?或者我会更好地使用QT或wxWidgets?
  3. 如果我走错路和/或有更好的解决方案我没有考虑过,请指出它们:)

到目前为止我的研究和结论

GUI库

对于Mac,我排除了使用跨平台GUI库(如QT),因为它似乎不能在Mac上提供原生外观(看起来不合适和/或难以编写跟随Apple的应用程序)人机界面指南).wxWidgets说它使用本机库,但是这篇文章提到wxPython可能使用私有的Objective-C调用,并且不太可能被批准用于Mac App Store.最后,即使外观正确,两个平台的布局可能仍需要改变.

因此,我计划在Mac界面中使用原生Cocoa GUI库,但仍考虑将wxWidgets用于Windows GUI.

语言

对于主应用程序逻辑来说,似乎我最好的语言选择是C++或Python.显然,使用Python编写跨平台代码比使用C++更容易,但总是存在权衡.

蟒蛇

优点:更快写入和更容易维护.强大的跨平台库,可以大大缩短开发时间.

缺点:使用Python意味着使用PyObjC,它已经超过一年没有更新(从svn可以看出),我不清楚它是否仍然适用于未来版本的Xcode和OSX.此外,使用PyObjc和py2app设置任何理智的构建配置,并在Xcode之外使用xibs进行GUI,这是一场噩梦.

C++

优点:更容易在Mac和Windows上设置构建配置和依赖项.运行速度比Python快得多,但在我的情况下性能并不是一个大问题.

缺点:我不懂C++.我对C非常好,但看起来这并不能帮助我写好C++.我的总体印象是编写跨平台C++要困难得多,但我可能错了.有很多关于晦涩的错误的帖子.虽然Boost看起来很有希望.

构建工具

如果在两个平台上使用C++作为主要语言,那么设置起来似乎很简单.如果我使用Python,在Windows上设置似乎也很简单,因为我会使用wxWidgets进行GUI和py2exe部署.

至于Mac和Python,标准选择似乎是pyobjc和py2app.不幸的是,我没有找到任何使用pyibapp构建配置的例子,它使用XIB和Cocoa库而不是QT或wxWidgets.我不希望Xcode管理构建,因为我更喜欢将Python文件和应用程序资源放在Xcode项目目录之外.这将大大简化Windows的设置并使文件树更清晰.

关于QT的编辑:我再看看QT,花了几个小时和QT设计师一起玩.基本UI元素(按钮,文本字段,标签)看起来与Cocoa元素相同.我轻松地将QWindow和QTabView与一些元素组合在一起,它看起来像一个Cocoa应用程序.但是,有一些负面因素:

  • 行为有点偏,如缺乏弹性滚动,QTextEdit没有指示焦点的蓝色阴影.
  • QTableView看起来不像它的Cocoa对应物.
  • 元素之间的间距,与父视图的间距,不遵循准则.它通常可以通过调整布局来修复,但需要在任何地方完成,我会免费使用Xcode.
  • 缺少用于制作检查员的HUD元素.这是我在我的应用程序中很可能需要的东西,至少在Mac方面是这样.
  • 可访问性支持不佳.

我知道我很挑剔,但需要挑剔才能做出好的UI.整体QT似乎是Windows的一个很好的解决方案,但我想我会坚持使用Cocoa for Mac.我对现有程序进行了一些额外的研究,发现VLC,ChromeTransmission都为Mac制作原生GUI,而VLC使用QT for Windows,Chrome使用自定义框架,而Transmission使用GTK +和QT for Linux.

我想我已经决定使用Cocoa GUI for Mac和Qt或wxWidgets for Windows,但仍然在C++和Python之间分配共享逻辑.

c++ python wxpython cross-platform py2app

12
推荐指数
2
解决办法
8772
查看次数

py2app:modulegraph缺少scan_code

由于某些原因我无法解释或google,即使用最简单的例子,py2app也会崩溃.我使用python 3.4.1虚拟环境创建,Projects/Test/virtenv其中py2app通过pip安装.

这是输出$pip list:

altgraph (0.12)
macholib (1.7)
modulegraph (0.12)
pip (1.5.6)
py2app (0.9)
setuptools (3.6)
Run Code Online (Sandbox Code Playgroud)

foo.py是一个保存在Projects/Test /中的hello world示例文件,包含一行:

print('hello world')
Run Code Online (Sandbox Code Playgroud)

setup.py保存在Projects/Test中,生成者$py2applet --make-setup foo.py:

"""
This is a setup.py script generated by py2applet

Usage:
    python setup.py py2app
"""

from setuptools import setup

APP = ['foo.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)
Run Code Online (Sandbox Code Playgroud)

这是运行的完整输出$python setup.py py2app(所有pip和python命令都是在激活虚拟环境的情况下完成的):

running py2app
creating /Users/mik/Desktop/Projects/Test/build
creating /Users/mik/Desktop/Projects/Test/build/bdist.macosx-10.8-x86_64
creating /Users/mik/Desktop/Projects/Test/build/bdist.macosx-10.8-x86_64/python3.4-standalone
creating /Users/mik/Desktop/Projects/Test/build/bdist.macosx-10.8-x86_64/python3.4-standalone/app …
Run Code Online (Sandbox Code Playgroud)

python macos py2app python-3.x

12
推荐指数
1
解决办法
2934
查看次数

Python:找不到 libpython3.5.dylib?

我想为我的 Python 代码制作一个 Mac 可执行文件,但总是收到以下错误消息:

OSError:找不到 Python 库:.Python、libpython3.5.dylib、Python

PyInstaller 和 py2app 都返回了相同的错误。我应该怎么做才能克服这个问题?

python pyinstaller py2app anaconda

11
推荐指数
1
解决办法
3952
查看次数