首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相对进口与py2app?

相对进口与py2app?
EN

Stack Overflow用户
提问于 2016-01-30 04:06:56
回答 2查看 522关注 0票数 2

以下是我的文件的编排方式:

代码语言:javascript
复制
| setup.py
+ myapp
  | __init__.py
  | myapp.py
  | version.py

(希望这是清楚的.不太复杂,我不认为。

下面是myapp.py包含的内容:

代码语言:javascript
复制
from fingui   import Label
from .version import __version__

Label('I am version: ' + __version__)

如果我位于可以看到setup.py的目录中,那么以下内容可以正常工作:

代码语言:javascript
复制
python -m myapp.myapp

当我尝试将其打包为应用程序时,请使用以下内容:

代码语言:javascript
复制
python setup.py py2app

然后运行它,在导入版本的行中得到以下错误消息:

代码语言:javascript
复制
ValueError: Attempted relative import in non-package

这是setup.py的内容

代码语言:javascript
复制
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可能把它误认为是一个标准的库模块什么的,所以不把它包括在我的应用包中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-30 14:57:40

我能够用以下方法解决这个问题:

代码语言:javascript
复制
| 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含量

代码语言:javascript
复制
from myapp import myapp

就这样。

setup.py的新内容,以及更改行上的注释。

代码语言:javascript
复制
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__)

我仍然有一个问题,就是它似乎没有将myappfingui复制到实际的MyApp.app包中.我认为它依赖于MyApp.app/Contents/Resources/site.pyc..。如果我试图发布我的应用程序,它显然会崩溃。

票数 3
EN

Stack Overflow用户

发布于 2016-01-30 05:20:49

尝试以这样的方式导入包:导入fingui而不是fingui import *

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35097855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档