【发布时间】: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 解释器,因为它与构建系统中的解释器不同。但无论我尝试什么,它都会设置为本地解释器。
我尝试了几个选项,例如:
- 在 setup.py 的 shebang 标头中设置解释器
- 在 setup.py 中设置 sys.executable
- 使用选项={'build_scripts': {'executable': 'bin/custom_python'}}
- 使用 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