当我运行py2app时,我一直收到此错误。它在我做python app.py
并作为终端运行时有效,但是当其构建为py2app时不起作用
这是一个令人毛骨悚然的项目。
app.py
import os
from subprocess import call
def main():
cw = os.getcwd()
path = '/scrape'
cwd = cw + os.path.join(path)
ourPath = ['scrapy','crawl', 'yellow']
name = "yellow"
call(["scrapy", "crawl", "{0}".format(name)], cwd=cwd)
if __name__ == "__main__" :
main()
答案 0 :(得分:1)
scrape
软件包未包含在/Contents/Resources
文件夹中。
由于app.py
不包含scrape
包中的任何名称,因此在构建应用程序捆绑包时构造的模块图不包含它。
可以使用传递给--package
的{{1}}选项来更新构建过程以包括scrape软件包。 [1]
但是提供py2app
选项时,--package
包将被复制到
scrapy
。 [2]
这意味着您必须解析要在此新路径中运行的subprocess命令的目录。
一种更好的解决方法是直接通过Crawler API运行刮板,而不是在可行的情况下将其作为子流程命令。 [3] 通过这种方法,py2app构建了模块图以包含来自Contents/Resources/lib/python2.X/
包的必要代码。