我正在制作一个设计为模块化的pygame程序.我正在使用main.py文件的pygame2exe构建一个exe,它基本上只是导入真正的主游戏并运行它.我希望的是一种将从EXE执行Python脚本的启动程序,而不是包含所有不可变文件的单个程序.
最好的方法是什么?我尝试使用imp在运行时动态导入所有模块而不是隐式导入它们,但这似乎打破了对象继承.
作为 python 包开发人员,运行使用入口点的控制台脚本的过程是什么?
我有一个带有 with 的 python 项目setup.py。其中,我有一个
entry_points={
'console_scripts': [
'myscript=mypackage.myscript.__main__:main',
]
},
Run Code Online (Sandbox Code Playgroud)
如果我这样做python setup.py develop,我最终会得到 中的包装器脚本virtualenv/bin,但是当我运行它们时,我会收到错误:
ImportError:找不到入口点('console_scripts','myscript')
(如果我这样做,上面的方法就pip install .有效)
现在,从项目顶部,我可以复制包装器脚本并手动执行以下操作:
$ python
Python 3.6.8 (default, Apr 25 2019, 21:02:35)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pkg_resources import load_entry_point
>>> load_entry_point('mypackage', 'console_scripts', 'myscript')
<function main at 0x7f7b971bcea0>
>>>
Run Code Online (Sandbox Code Playgroud)
因此,我从中得到的是virtualenv/bin/myscript在virtualenv包中查找,当我从开发环境顶部手动运行它时,它会在当前目录中查找包。
但我不想把它耗尽 …