cuốn sách gpt4 ai đã làm

Tại sao nó không thành công khi tôi chạy A.exe gọi B.exe vì B.exe cố gắng tìm mô-đun của nó trong thư mục A.exe (người gọi) thay vì thư mục B.exe (người gọi)?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 21:17:37 29 4
mua khóa gpt4 Nike

Khi tôi chạy B.exe (nằm ở c:/my_software/FOLDER_B/B.exe) từ A.exe (nằm ở c:/my_software/FOLDER_A/A.exe), cả hai đều được xây dựng bằng cx_Freeze và B.exe khi cần thiết Khi tìm kiếm trong thư mục B.exe, (người được gọi) cố gắng tìm mô-đun của mình (ví dụ: IMAGE_B.png) trong thư mục A.exe (người gọi). Tôi nghĩ điều này là do một số mã xấu trong setup.py của cx_Freeze.

Tôi sử dụng hàm os.getcwd() trong tập lệnh để lấy đường dẫn gốc của mỗi .exe

Đây là setup.py mà tôi sử dụng để xây dựng .exe(A và B)

hệ điều hành nhập khẩu
từ thiết lập nhập cx_Freeze, Có thể thực thi
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"],
loại trừ = [],
include_files [r'c:\python\DLLs\tcl86t.dll',
r'c:\python\DLLs\tk86t.dll',
'A.png','icono.ico'])

thực thi = [Có thể thực thi được ('A.py',
base="Bảng điều khiển",
biểu tượng = "icono.ico")]

thiết lập(name='A',version = '1',
description = 'chương trình A',
tùy chọn = dict(build_exe = buildOptions),
thực thi được = thực thi được)

câu trả lời hay nhất

Nhìn thấy cx_Freeze 文档 cách sử dụng tập tin dữ liệu . Nó cung cấp ví dụ mã sau:

def find_data_file(tên tệp):
nếu getattr(sys, 'đóng băng', Sai):
# Ứng dụng bị đóng băng
datadir = os.path.dirname(sys.executable)
khác:
# Ứng dụng không bị đóng băng
# Thay đổi bit này để khớp với nơi bạn lưu trữ tệp dữ liệu của mình:
datadir = os.path.dirname(__file__)

trả về os.path.join(datadir, tên tệp)

Cũng xin lưu ý rằngcx_Freeze Phiên bản 5.1.1 (phiên bản hiện tại) sẽ kẹt gói vào thư mục bản dựng lib thư mục con, trong khi tập lệnh chính sẽ bị kẹt. Bị kẹt trong thư mục xây dựng. Bạn có thể cần phải sửa đổi ví dụ mã trên cho phù hợp.

Về python - Tại sao nó không thành công khi tôi chạy A.exe gọi B.exe vì B.exe cố gắng tìm mô-đun của nó trong thư mục A.exe (người gọi) thay vì thư mục B.exe (người gọi)? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/54565023/

29 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress