이것이 스택 오버플로에 관한 첫 번째 질문입니다!
저는 현재 서적 컬렉션을 관리하기 위해 Python 스크립트 (글쎄요, 실제로 몇 개의 스크립트)를 작성하고 있습니다. 이제는 동결 및 배포하고 싶습니다. (이것이 내 첫 번째 '큰'프로젝트입니다.) 많은 옵션을 살펴본 후에 Cx_Freeze로 시도하기로 결정했습니다. (저는 Python 3.6 및 Cx_Freeze 5.1.1을 사용하고 있습니다).파이썬 suprocess가 cx_freeze 이후 작동하지 않습니다.
이 프로젝트에서는 스크립트에서 다른 것으로 옮기기 위해 종종 '하위 프로세스'를 사용합니다. 인터프리터에서 그것은 내가 나 cx_Freeze을 할 경우 사용하여 빌드 폴더를 만들어, 잘 작동
python setup.py build
그것을 작동뿐만 아니라,하지만 설치 후
python setup.py bdist_msi
으로 배포 파일을 만들려고 할 때 하위 프로세스에 대한 첫 번째 호출부터 시작하여 작동합니다.
여기
from cx_Freeze import setup, Executable
import os.path
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')
setup(
name = "Libro",
version = "1.0.0",
options = {"build_exe": {
'packages': ["tkinter", "subprocess", ],
'include_files': [os.path.join(PYTHON_INSTALL_DIR, 'DLLs','tk86t.dll'), \
os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'), \
'logo50x50.gif', 'check_1.txt', 'check_2.txt', 'start.py', \
'createdb.py', *and_a_few_more_files*],
'include_msvcr': True,
}},
executables = [Executable("Libro.py",base="Win32GUI")]
setup.py입니다 그리고 이것은 실행이되는 Libro.py 스크립트입니다.
#This script checks the documents check_1 and check_2 and then launches
# createdb.py or start.py
import subprocess
from tkinter import *
import tkinter.messagebox as box
root= Tk()
root.withdraw()
with open('check_1.txt', 'r') as check_1:
for line in check_1:
line = line.strip()
value_1 = int(line)
with open('check_2.txt', 'r') as check_2:
for line in check_2:
line = line.strip()
value_2 = int(line)
if value_1 == 0 and value_2 == 0:
box.showinfo('Libro 1.0', '''
Welcome to the installation of Libro.
I am now creating the database for your catalogue.
This may take a moment.''')
subprocess.call("createdb.py", shell=True)
else:
subprocess.call("start.py", shell=True)
root.mainloop()
그것은, 그것은 check_len 일 및 check_2을 찾습니다, 시작은 Tkinter은 showInfo 창을 보여줍니다 그리고 ... 그것 뿐이다. 나는 어떤 제안이라도 매우 감사 할 것이다!! 고마워요 :)
안녕 사이먼입니다. 죄송합니다 - – Alessandro