py2app不包括pythonpath

时间:2011-11-20 18:49:22

标签: python py2app

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

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

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

  • 我应该只将导入语句更改为import file吗?
  • 如何让py2app实现我的PYTHONPATH

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你有以下布局:

PythonApp/
  __init__.py
  file.py
  foo.py

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

from . import file

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

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

另外,ImportError的一个更简单的解释是py2app没有将你的包复制到app bundle中。确保packages参数setup()中列出了所有包。