Python 为什么我运行A.exe(调用B.exe)时失败,因为B.exe尝试将其模块查找到A.exe(调用方)文件夹,而不是B.exe文件夹(调用方)?
当我从A.exe(位于c:/my_software/FOLDER_A/A.exe中)运行B.exe(位于c:/my_software/FOLDER_A/A.exe中)时(位于c:/my_software/FOLDER_A/A.exe中),两者都是用cx_Freeze构建的,B.exe(调用)会尝试在A.exe文件夹(调用方)中查找他的模块(例如IMAGE_B.png)。我认为这是由于cx_Freeze的setup.py中的一些错误代码造成的 我在脚本中使用函数os.getcwd()来获取每个.exe中的根路径 这是我的setup.py,我用它来构建.exe(A和B)Python 为什么我运行A.exe(调用B.exe)时失败,因为B.exe尝试将其模块查找到A.exe(调用方)文件夹,而不是B.exe文件夹(调用方)?,python,python-3.x,cx-freeze,Python,Python 3.x,Cx Freeze,当我从A.exe(位于c:/my_software/FOLDER_A/A.exe中)运行B.exe(位于c:/my_software/FOLDER_A/A.exe中)时(位于c:/my_software/FOLDER_A/A.exe中),两者都是用cx_Freeze构建的,B.exe(调用)会尝试在A.exe文件夹(调用方)中查找他的模块(例如IMAGE_B.png)。我认为这是由于cx_Freeze的setup.py中的一些错误代码造成的 我在脚本中使用函数os.getcwd()来获取每个.e
请参阅
cx\u冻结
文档中的。它提供了以下代码示例:
def find_data_文件(文件名):
如果getattr(系统“冻结”,错误):
#应用程序被冻结
datadir=os.path.dirname(sys.executable)
其他:
#应用程序未被冻结
#更改此位以匹配存储数据文件的位置:
datadir=os.path.dirname(_文件__)
返回os.path.join(datadir,文件名)
还请注意,
cx\u Freeze
version 5.1.1(当前版本)将把包冻结到生成目录的lib
子目录中,而主脚本本身将冻结在生成目录中。您可能需要相应地修改上面的代码示例 请参见cx\u冻结
文档中的。它提供了以下代码示例:
def find_data_文件(文件名):
如果getattr(系统“冻结”,错误):
#应用程序被冻结
datadir=os.path.dirname(sys.executable)
其他:
#应用程序未被冻结
#更改此位以匹配存储数据文件的位置:
datadir=os.path.dirname(_文件__)
返回os.path.join(datadir,文件名)
还请注意,cx\u Freeze
version 5.1.1(当前版本)将把包冻结到生成目录的lib
子目录中,而主脚本本身将冻结在生成目录中。您可能需要相应地修改上面的代码示例
import os
from cx_Freeze import setup, Executable
import sys
os.environ['TCL_LIBRARY'] = r'c:\python\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'c:\python\tcl\tk8.6'
buildOptions = dict(packages = ["tkinter","os"],
excludes = [],
include_files [r'c:\python\DLLs\tcl86t.dll',
r'c:\python\DLLs\tk86t.dll',
'A.png','icono.ico'])
executables = [Executable('A.py',
base="Console",
icon = "icono.ico")]
setup(name='A',version = '1',
description = 'program A',
options = dict(build_exe = buildOptions),
executables = executables)