Python Py2app 打包目录
我在使用py2app打包的一组Python文件中遇到了一个错误,提示无法调用某个方法。
(1) 我查阅了很多关于py2app导入大目录或包组的信息,但似乎在与这些文件交互时出现了问题。我在我的设置中硬编码了每个要包含的文件,但它仍然提示无法从我的文件'random.py'中调用一个函数。这个'random.py'文件会生成一个脚本,通过'happy.py'运行,而这个脚本单独运行时完全没问题,所有的依赖关系(比如导入的模块等)也都是正确的。
(2) 更复杂的是,这个应用程序完全通过终端运行,所以我不确定是否需要直接给别人发送.exe文件,因为我猜测py2app会直接运行脚本,而没有用户输入的选项。
SETUP FILE
"""
This is a setup.py script generated by py2applet
Usage:
python setup.py py2app
"""
from setuptools import setup
APP = ['happy.py']
DATA_FILES = ['happy.pyc',
'random.py',
'random.pyc',
'happy.py',
'screener.py',
'__init__.py',
'screener.pyc',
'setup.py']
OPTIONS = {'argv_emulation': True}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
py_modules=['random', 'screener', '__init__','happy',],
setup_requires=['py2app'],
)
ERROR OUT(given by .exe inside of .app, since .app runs a console error 255 with 0 info)
| | _____ _____| | / |
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: | |/ _ \ \ / / _ \ | | |
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: | | __/\ V / __/ | | |
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: |_|\___| \_/ \___|_| |_|
Sep 9 04:39:12 softroot.local happy[39888] <Notice>:
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: Traceback (most recent call last):
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: File "/Users/random/Desktop/bla/dist/happy.app/Contents/Resources/__boot__.py", line 373, in <module>
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: _run()
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: File "/Users/random/Desktop/bla/dist/happy.app/Contents/Resources/__boot__.py", line 358, in _run
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: exec(compile(source, path, 'exec'), globals(), globals())
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: File "/Users/random/Desktop/bla/dist/happy.app/Contents/Resources/happy.py", line 275, in <module>
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: print testone()
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: File "/Users/random/Desktop/bla/dist/happy.app/Contents/Resources/happy.py", line 52, in testone
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: from random import function
Sep 9 04:39:12 softroot.local happy[39888] <Notice>: ImportError: cannot import name function
1 个回答
0
你问的这个 random.py
是你自己写的脚本,还是Python自带的模块呢?
你有没有试过从你生成的应用包里复制 random.py
,然后用 import random
导入它,接着检查一下 random.__file__
确保它就是你想要的那个文件?然后再试着执行出问题的那行代码 from random import function
?