从库中调用setuptools入口点

时间:2016-10-04 11:37:51

标签: python setuptools packaging

我有一个基于setuptools的Python(3.5)项目,其中包含多个脚本作为类似于以下内容的入口点:

entry_points={
    'console_scripts': [
        'main-prog=scripts.prog:main',
        'prog-viewer=scripts.prog_viewer:main'
    ]}

所以应该有一个主脚本,运行为main-prog和一个辅助脚本prog-viewer(它做一些Tk的东西)。

问题是,我希望能够在prog-viewer的{​​{1}}子进程中运行Popen(或者更确切地说,形成我的库),而无需手动找出路径然后适应不同的操作系统。另外,当我的PATH包含一个不属于我的库的同名脚本时,我该怎么办?我可以告诉我的程序main-prog吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Popen运行python命令,例如:

Popen('python -c "from scripts.prog import main; main()"', shell=True)

答案 1 :(得分:0)

您可以使用“多处理”模块,该模块还将把代码作为子进程运行。例如,

from multiprocessing import Process
from scripts.prog import main
# or 
# from pkg_resources import load_entry_point
# main = load_entry_point('your-package', 'console_scripts', 'main_prog')

p = Process(main)
p.start()
p.join()