我的应用程序必须在Windows上使用python embedded distribution(Windows x86-64可嵌入zip文件)。
摘要:我想部署一个带有.exe的python应用程序,可以从命令行调用它以在python嵌入式发行版中启动该应用程序。我在工作流程中使用setuptools entry_points和pip install --target。
示例:
结构
foo
bar
__init__.py
helloworld.py
setup.py
setup.py
from setuptools import setup, find_packages
setup(
name='HelloWorld',
version='1.0.0',
packages=find_packages(),
entry_points={
'console_scripts': [
'hello_world = bar.helloworld:hello_world']
}
)
bar / helloworld.py
def hello_world():
print("Hello World")
因此,在非嵌入式(“标准”)python发行版中:
PS C:\foo> python .\setup.py bdist_wheel
PS C:\foo> pip install dist\HelloWorld-1.0.0-py3-none-any.whl
PS C:\> hello_world.exe
Hello World
有效。
但是现在如果使用嵌入式python发行版。假设它在C:\ embed中。
PS C:\embed> pip install --target . C:\foo\dist\HelloWorld-1.0.0-py3-none-any.whl
这将安装,但是helloworld.exe位于C:\ embed \ bin中。
PS C:\> embed\bin\hello_world.exe
Traceback ... blah ...
ModuleNotFoundError: No module named 'foo'
我尝试了各种想法,但到目前为止无法运行helloworld.exe。
问题: 是否可以使用setuptools和pip部署带有entry_point控制台脚本的程序包,而该脚本可以直接在python嵌入式发行版中调用?