以下是我的文件的编排方式:
| setup.py
+ myapp
| __init__.py
| myapp.py
| version.py(希望这是清楚的.不太复杂,我不认为。
下面是myapp.py包含的内容:
from fingui import Label
from .version import __version__
Label('I am version: ' + __version__)如果我位于可以看到setup.py的目录中,那么以下内容可以正常工作:
python -m myapp.myapp当我尝试将其打包为应用程序时,请使用以下内容:
python setup.py py2app然后运行它,在导入版本的行中得到以下错误消息:
ValueError: Attempted relative import in non-package这是setup.py的内容
exec(open('myapp/version.py').read())
from setuptools import setup
setup(app = 'myapp/myapp.py',
setup_requirements = ['py2app'],
name = 'MyApp',
version = __version__)如果我查看py2app生成的应用程序包,我会发现myapp.py放在包中,但是version.py和__init__.py却找不到。
构造我的文件的正确方法是什么?如何让py2app和/或setup识别哪些文件是必需的,哪些文件放在哪里?
另外,在我们讨论这个问题的时候,我如何让它包括fingui?那是我用pip安装的一个库..。我认为py2app可能把它误认为是一个标准的库模块什么的,所以不把它包括在我的应用包中?
发布于 2016-01-30 14:57:40
我能够用以下方法解决这个问题:
| main.py <- New file I added - details below.
| setup.py <- I changed a bit in here.
+ myapp <- Same exact contents as before - I changed nothing.我创建了一个新文件,main.py,它位于myapp包之外。在setup.py中,我告诉它main.py是应用程序,myapp是一个包。
main.py含量
from myapp import myapp就这样。
setup.py的新内容,以及更改行上的注释。
exec(open('myapp/version.py').read())
from setuptools import setup
setup(app = 'main.py', ### This now points at main.py instead of myapp/myapp.py
options = {'py2app': {'packages': ['myapp']}}, ### This line is all new.
setup_requirements = ['py2app'],
name = 'MyApp',
version = __version__)我仍然有一个问题,就是它似乎没有将myapp或fingui复制到实际的MyApp.app包中.我认为它依赖于MyApp.app/Contents/Resources/site.pyc..。如果我试图发布我的应用程序,它显然会崩溃。
发布于 2016-01-30 05:20:49
尝试以这样的方式导入包:导入fingui而不是fingui import *
https://stackoverflow.com/questions/35097855
复制相似问题