问题描述
MinimalExample
├── _buildscripts
│ ├── setup.py
│
├── _MainProgram
│ ├──_modules1
│ │ ├──timescalculation.py
│ │
│ ├──_modules2
│ │ ├──divisioncalculation.py
│ │
│ │──mainprogram.py
│
│──README.md
我的 setup.py 是:
import sys
import setuptools
import os
from pathlib import Path
from cx_Freeze import setup,Executable
# adding this path to sys so modules are searched from it
sys.path.append(os.path.abspath("../MainProgram")) # maybe this causes the problem?
# just to see what is in sys
for dire in sys.path:
print(dire)
# PATH DEFinitioNS
mainprogram_path = Path(os.path.abspath('MainProgram/mainprogram.py')) # OR maybe this causes the problem?
# OTHER BUILD_EXE OPTIONS DEFinitioNS
includes = ["os"]
packages = ["modules1","modules2"]
replace_paths = [("*","")]
base = None
# EXECUTABLE DEFinitioN
executables = [Executable(
script=mainprogram_path,shortcut_name = "Example",shortcut_dir="DesktopFolder",base=base
)
]
# SETUP DEFinitioN
setup( name = "ExampleProgram",author = "Me",version = "1.0",options = {"build_exe": {
"packages": packages,"includes": includes,"optimize": 1,"replace_paths": replace_paths},"bdist_msi": {
"upgrade_code": "{9446b224-e087-4502-a791-5bd132065ccd}"} # for example use only
},executables = executables)
这里是 mainprogram.py
from modules1 import timescalculation
from modules2 import divisioncalculation
import time
def main():
num1 = float(input("Give first num: "))
num2 = float(input("Give second num: "))
times = timescalculation.timescalculation(num1,num2)
print(num1," times ",num2,"is",times)
division = divisioncalculation.divisioncalculation(num1," devided by ",division)
time.sleep(5)
if __name__ == "__main__":
main()
modules1 -> timescalculation.py
def timescalculation(num1,num2):
return num1 * num2
modules2 -> Divisioncalculation.py
def divisioncalculation(num1,num2):
return num1 / num2
代码只是为了重复我遇到的问题。但是 setup.py
几乎就是我正在使用的。
运行 python setup.py bdist_msi
后,脚本构建成功,但从控制台运行 exe 文件后,我得到:
Traceback (most recent call last):
File "__startup__.py",line 74,in run
File "Console.py",line 33,in run
File "<frozen zipimport>",line 159,in get_code
File "<frozen zipimport>",line 721,in _get_module_code
zipimport.ZipImportError: can't find module 'mainprogram__main__'
问题:
这是因为我从不同的文件夹运行 setup.py
吗?是否可以从现在的位置运行它?
如果可以从与 setup.py
不同的文件夹运行 mainprogram.py
,我该怎么做?
但是如果我从 mainprogram.py
所在的同一个文件夹运行安装程序,我没有这个问题,但我想把它放在它自己的文件夹中,里面有 icon.ico 和其他东西。这是我第一次使用 cx_freeze,也许将 setup.py
放在不同的文件夹中只是违反惯例?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)