我正在尝试使用py2app构建应用程序。我可以构建应用程序,但是当我运行它时,我在控制台中得到ImportError
,导入错误是No module named PythonApp
这是我所有来源所在的文件夹,其位置在我的PYTHONPATH
。
我一直在导入from PythonApp import file
等本地文件,而不仅仅是import file
,以帮助避免名称空间问题。
我尝试使用以下标记python setup.py py2app --use-pythonpath
构建它,但这似乎没有任何区别。
import file
吗?PYTHONPATH
? 答案 0 :(得分:1)
如果我理解你的问题,你有以下布局:
PythonApp/
__init__.py
file.py
foo.py
您尝试通过file
从foo.py
导入模块from PythonApp import file
。如果这是您要设置PYTHONPATH
的唯一原因,则有一个更简单的解决方案:使用relative imports:
from . import file
您可以在from .. import file
的子包中使用PythonApp
,依此类推。这样就可以避免与标准模块发生名称冲突。
如果由于某些其他原因需要破解导入路径,您还可以在启动脚本中设置sys.path
变量(可能py2app也有一些选项)。请记住,如果您将外部目录添加到导入路径中,则分发应用程序包将更加困难。
另外,ImportError
的一个更简单的解释是py2app没有将你的包复制到app bundle中。确保packages
参数setup()
中列出了所有包。