使用python嵌入式发行版部署带有entry_point

时间:2018-06-19 20:26:07

标签: python pip setuptools entry-point

我的应用程序必须在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嵌入式发行版中调用?

0 个答案:

没有答案