【问题标题】:python pip configure python executable for entry_pointspython pip 为 entry_points 配置 python 可执行文件
【发布时间】:2018-07-11 12:00:33
【问题描述】:

我有一个要在本地构建的包,以便在嵌入式环境中使用。

我正在尝试自动生成控制台脚本,因此我在 entry_points 中使用控制台脚本,如下所示:

setup(...,
    entry_points={
        'console_scripts': [
                'app=x.y:main'
        ]
    },
    # Below is added as the other tried methods failed.
    options={
        'build_scripts': {
            'executable': '/bin/custom_python',
        },
    }
)

我正在尝试设置我的 entry_point 中使用的 python 解释器,因为它与构建系统中的解释器不同。但无论我尝试什么,它都会设置为本地解释器。

我尝试了几个选项,例如:

  1. 在 setup.py 的 shebang 标头中设置解释器
  2. 在 setup.py 中设置 sys.executable
  3. 使用选项={'build_scripts': {'executable': 'bin/custom_python'}}
  4. 使用 pip install --global-option=build --global-option='--executable=/bin/custom_python'

但以上都没有奏效。我想知道我是否遗漏了什么?

【问题讨论】:

  • 你能说明你想做什么吗? entry_point 并没有实际执行,它只是其他代码找到它的钩子。如果您的意思是您定义了一个console_scripts,那么它只是使用用于运行setup.py 的python 版本。在这种情况下,只需使用您想要的 python 版本。覆盖sys.executable 等是徒劳的,因为您的进程已经在运行。
  • 很抱歉,如果不清楚。我正在通过 entry_points 中的 console_scripts 选项生成控制台脚本。我已经更新了问题以澄清这一点。并且目标python版本在主机中不可用,它们甚至不在同一路径中。
  • 我不明白。 console_scripts 在安装时执行,而不是在构建时执行。无论在要安装的目标主机上使用什么版本,该版本都用于console_scripts。你如何“生成”控制台脚本?你是怎么安装的?
  • 让我解释一下我要做什么,我在 mac 主机中有一个包,应该构建并安装在一个目录中,该目录将成为我正在尝试的 BSP“板级支持包”的一部分为我的包自动生成一个入口点,该入口点应该运行 x.y.main。这里的问题是python解释器的路径在mac主机和目标板上是不同的。我想让入口点指向正确的 python 解释器,所以我需要在生成的脚本中强制使用特定的 python 解释器。
  • 如果您无法访问常规安装机器(它将为您创建脚本)在您的开发机器上构建它,并替换生成脚本中的 shebang。

标签: python setuptools distutils


【解决方案1】:

所以我终于成功了。

首先,我必须在我的设置调用中添加以下内容,这在各种帖子中都有建议:

options={
    'build_scripts': {
        'executable': '/bin/custom_python',
    },
}

现在我像往常一样构建和安装包。就我而言,我创建了一个轮子并安装它:

python3 setup.py sdist bdist_wheel -d wheels 
pip3 install --no-deps -U --prefix $TARGET_INSTALL wheels/mypackage.whl

上面将使用本地python解释器来创建脚本

为了解决这个问题,我运行以下命令:

python3 setup.py install_scripts -d $TARGET_INSTALL/bin

将脚本替换为“build_scripts”选项中传递的正确脚本。

但是我还是想知道有没有办法在用pip安装轮子的时候直接得到正确的解释器?

【讨论】:

    【解决方案2】:

    试试

    python setup.py build --executable /bin/custom_python
    python setup.py install  # or bdist_egg/bdist_wheel
    

    【讨论】:

      猜你喜欢
      • 2017-06-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      相关资源
      最近更新 更多