- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用众所周知的第三方打包系统打包一些 python 包,但我遇到了入口点创建方式的问题。
当我在我的机器上安装入口点时,入口点将包含一个指向任何 python 解释器的 shebang,如下所示:
在/home/me/development/test/setup.py
from setuptools import setup
setup(
entry_points={
"console_scripts": [
'some-entry-point = test:main',
]
}
)
在/home/me/.virtualenvs/test/bin/some-entry-point:
#!/home/me/.virtualenvs/test/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'test==1.0.0','console_scripts','some-entry-point'
__requires__ = 'test==1.0.0'
import sys
from pkg_resources import load_entry_point
sys.exit(
load_entry_point('test==1.0.0', 'console_scripts', 'some-entry-point')()
)
如您所见,入口点样板文件包含一个硬编码路径,指向 python 解释器,该路径位于我用来创建第三方包的虚拟环境中。
使用我的第三方打包系统安装这个入口点会导致在机器上安装入口点。但是,由于这种对目标机器上不存在的 python 解释器的硬编码引用,用户必须运行 python/path/to/some-entry-point
。
shebang 使它变得非常不可移植。 (这当然不是 virtualenv 的设计目标;但我只需要让它在这里更便携一些。)
我不想求助于疯狂的 find/xargs/sed 命令。 (虽然这是我的后备。)
有什么方法可以在 shebang 之后使用 setuptools
标志或配置更改解释器路径?
最佳答案
您可以通过设置“sys.executable”来自定义 console_scripts 的 shebang 行(从 debian bug report 中了解到)。也就是说……
sys.executable = '/bin/custom_python'
setup(
entry_points={
'console_scripts': [
... etc...
]
}
)
更好的方法是在构建时包含“执行”参数...
setup(
entry_points={
'console_scripts': [
... etc...
]
},
options={
'build_scripts': {
'executable': '/bin/custom_python',
},
}
)
关于python - 更改用于打包的 console_script 入口点解释器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17237878/
我在 Windows 上使用 setuptools(版本 0.6c11),并指定要通过 console_scripts 安装的控制台脚本入口点。它在 Linux 上运行良好,但在 Windows 下,
我在 setup.py 中有以下代码 from setuptools import setup setup( name='raas', version='0.1', descr
我无法在我的 python 包中导入入口点控制台脚本。寻求帮助调试我当前的问题,因为我已阅读有关该问题的所有相关帖子。 这是我的目录结构: ├── ContentAnalysis │ ├── __
我正在使用众所周知的第三方打包系统打包一些 python 包,但我遇到了入口点创建方式的问题。 当我在我的机器上安装入口点时,入口点将包含一个指向任何 python 解释器的 shebang,如下所示
我正在尝试按照learnpythonthehardway教程中的说明启动 Nose 测试。 我尝试从Powershell运行 Nose 测试,并得到以下信息: PS E:\python\project
我想知道是否有任何方法可以为setup()的entry_points arg内的console_scripts中定义的命令指定别名。 我可以做这样的事情吗? entry_points={
我有以下 setup.py: from setuptools import setup from distutils.core import setup setup( name="foobar
我有一个设置入口点 console_script 的包,我希望 console_script 将 python 函数/脚本作为 Python3 运行 我的包使用 urllib.request 模块 (
我有一个复杂的 python 程序,我想在 setup.py 所在的位置进行调试 entry_points=dict( console_scripts=[ 'mypr
当创建console_scripts作为entry_points时,如何访问包中的数据文件(package_data)? setup( # other stuff entry_poin
我在使用 python whl 包时遇到了以下问题: 我有一个包,在我的 setup.py 中定义了一个入口 pip 。当我运行 pip install . 时,它会正确安装包 AND 入口 pip
My package在它的 setup.py 中定义了一个入口点: # -*- coding: utf-8 -*- from setuptools import setup setup( na
我的 setup.py有以下 console_scripts 作为入口点: entry_points={ 'console_scripts': ['script=myapp.app:d
当前的 django 文档告诉我这个: django.setup() may only be called once. Therefore, avoid putting reusable applic
我将我的代码打包到 python 包中,现在我希望它也可以从命令行 (linux) 运行。所以我在 setup.py 中添加了 console_scripts 标签,当我以 root 身份 pip 安
我有一个 Python 包 package_name它提供了一个命令行应用程序command-line-app-name如console_script :setup.py : setup( .
我正在尝试在 Python 中构建一个名为 dnsrep 的程序,我正在使用 setuptools 以便我可以在不使用命令 python dnsrep 的情况下调用 dnsrep 模块。我写的setu
我创建了一个带有 GUI 组件的 python 库。我正在使用 setuptools 的 console_scripts 功能创建一个命令行启动器。目前,当我使用 console_scripts 启动
我正在尝试安装一个包,其中一个说明如下,但我收到错误。 easy_install -U distribute pip Traceback (most recent call last): File
通过 setup.py 将 Python 控制台脚本安装到我的路径中基本上有两种方法: setup( ... entry_points = { 'console_scr
我是一名优秀的程序员,十分优秀!