我正试图用py2app构建一个应用程序。我可以构建这个应用程序,但是当我运行它时,我在控制台中得到了ImportError,导入错误是No module named PythonApp,它是我所有的源代码所在的文件夹,其位置在我的PYTHONPATH中。
我一直在导入本地文件,比如from PythonApp import file,而不仅仅是import file,以帮助避免命名空间问题。
我尝试使用以下标志python setup.py py2app --use-pythonpath构建它,但这似乎没有什么不同。
import filePYTHONPATH发布于 2011-11-20 22:19:02
如果我很好地理解了您的问题,那么您的布局如下:
PythonApp/
__init__.py
file.py
foo.py然后尝试通过file从foo.py导入模块from PythonApp import file。如果这是您希望设置PYTHONPATH的唯一原因,那么有一个更简单的解决方案:使用相对进口
from . import file您可以在from .. import file的子包中使用PythonApp,等等。这样您就可以避免与标准模块的名称冲突。
如果出于其他原因需要对导入路径进行黑客攻击,还可以在启动脚本中设置sys.path变量(可能py2app也有一些选项)。不过,请记住,如果将外部目录添加到导入路径中,则分发应用程序包将更加困难。
另外,对ImportError的一个更简单的解释是,py2app没有将您的包复制到应用程序包中。确保在packages参数setup()中列出了所有包。
https://stackoverflow.com/questions/8203797
复制相似问题