2011-11-20 77 views
1

我想用py2app构建一个应用程序。我可以构建应用程序,但是当我运行它时,我在控制台中得到ImportError,导入错误是有No module named PythonApp这是我所有源所在的文件夹,其位置在我的PYTHONPATH中。py2app不包括pythonpath

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

我试图建立它与以下国旗python setup.py py2app --use-pythonpath但这似乎没有任何区别。

  • 我是否应该只将整个导入语句更改为import file
  • 我该如何让py2app实现我的PYTHONPATH

回答

1

如果我明白你的问题很好,你有以下布局:

PythonApp/ 
    __init__.py 
    file.py 
    foo.py 

,并尝试通过从from PythonApp import file导入foo.py模块file。如果你想设置PYTHONPATH的唯一原因,还有一个更简单的解决方案:使用relative imports

from . import file 

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

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

此外,ImportError的一个更简单的解释是,py2app没有将你的软件包复制到应用程序包中。请确保您的packages参数setup()中列出的所有软件包。