1

我正在尝试使用 py2app 构建一个应用程序。我可以构建应用程序,但是当我运行它时,我进入ImportError控制台,导入错误是No module named PythonApp我的所有源代码所在的文件夹,其位置在我的PYTHONPATH.

我一直在导入本地文件,from PythonApp import file而不仅仅是import file为了帮助避免命名空间问题。

我尝试使用以下标志构建它,python setup.py py2app --use-pythonpath但这似乎没有任何区别。

  • 我应该将整个导入语句更改为import file吗?
  • 我怎样才能让 py2app 实现我的PYTHONPATH
4

1 回答 1

1

如果我很好地理解了您的问题,那么您将具有以下布局:

PythonApp/
  __init__.py
  file.py
  foo.py

然后您尝试filefoo.pyby导入模块from PythonApp import file。如果这是您要设置的唯一原因PYTHONPATH,则有一个更简单的解决方案:使用相对导入

from . import file

可以from .. import file在子包中使用PythonApp,以此类推。这样您就可以避免与标准模块的名称冲突。

如果您出于其他原因需要破解导入路径,您还可以sys.path在启动脚本中设置变量(可能 py2app 也有一些选项)。请记住,如果您将外部目录添加到导入路径中,则分发应用程序包将更加困难。

此外,一个更简单的解释ImportError是 py2app 没有将您的包复制到应用程序包中。确保你的所有包都列packagessetup().

于 2011-11-20T22:19:02.253 回答