作为^{
simples脚本如下(我称之为main.py
):
from iapws import IAPWS97
def main():
h = IAPWS97(P=1, x=1).h
print(f"h = {h:.5g} kJ/kg")
if __name__ == "__main__":
main()
这个脚本很好用。通过pyinstaller main.py
打包此文件将创建dist\main
文件夹,其中包含main.exe
。
执行main.exe
产生
Traceback (most recent call last):
File "main.py", line 3, in <module>
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "PyInstaller\loader\pyimod03_importers.py", line 531, in exec_module
File "iapws\__init__.py", line 15, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\...\\dist\\main\\iapws\\VERSION'
[22492] Failed to execute script main
这里的问题是缺少VERSION
文件,即iapws
包的数据文件,作为导入包的打包者,我不必担心这个文件。我克隆了iapws
包,并试图以多种方式在setup.py
中指定VERSION
数据文件,但pyInstaller
无法获取它
如何在iapws
包内指定什么来触发pyInstaller
拾取此类数据文件?
此问题与iapws
开发人员here沟通
为此,
pyInstaller
允许应用钩子。在本例中,使用内容创建一个名为hook-iapws.py
的钩子作为包的用户,可以通过指向pyinstaller文件中的包含目录来找到钩子:
作为包的开发人员,钩子可以通过
pyInstaller
找到,如in this link所述,或者通过向pyInstaller开发人员提供钩子文件相关问题 更多 >
编程相关推荐