我正在使用setuptools
进行python打包,在这里我用设置.py文件:
设置.py
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
setup(...
name='my_project',
entry_points={'console_scripts':['my_entry_name=my_package.scripts.my_python_script:main'
]},
...
)
安装包后,我可以从批处理文件调用此入口点,如下所示:
我的\u当前\u批_file.command命令
#!/bin/bash
cd "$(dirname "$0")" # set the working directory as the command file locations
~/anaconda3/envs/my_env_name/bin/entry_point_name <my script args>
虽然这样做可行,但虚拟环境的使用导致我在入口点调用之前包含所有路径信息,在我看来,这实际上破坏了入口点应该为脚本使用者提供的简单性。有没有办法让setuptools
在系统范围内注册入口点,这样我就可以调用入口点而不需要这样的路径?地址:
我想要的批次_file.command命令
#!/bin/bash
cd "$(dirname "$0")" # set the working directory as the command file locations
entry_point_name <my script args>
如果没有虚拟环境带来的这种复杂性,控制台脚本入口点允许脚本使用者使用脚本,而不必知道脚本安装在哪里,甚至不必知道它是用什么语言编写的。即使在虚拟环境中打包,我也希望保持这种简单性。你知道吗
我尝试过的- 安装包后,我在虚拟环境中找到了实际的入口点文件:
/anaconda3/envs/my_env/bin/my_entry_name
并将此文件的副本放置在主bin路径中:
/anaconda3/bin/my_entry_name
然后发现我可以根据需要调用没有路径的入口点,但是这是一个手动步骤,我不想让脚本使用者去做。有没有办法让setuptools
将入口点文件放在常规bin路径中,而不是放在环境bin或其他一些自动方法中?你知道吗
我的设置
看来^{} 能帮上忙。你知道吗
我无法测试它,但看起来它可以编写一个更简单的shell脚本。类似于:
不过,这似乎是一个实验性的特征。你知道吗
相关问题 更多 >
编程相关推荐