当有人安装我的 Python 包时,他们可以使用命令mycmd
(这是添加到 pythonbin/
目录的控制台脚本)。反过来,mycmd
使用以下命令启动其他几个 Python 控制台脚本subprocess
:
subprocess.Process('celery arg1 arg2')
subprocess.Process('huey arg1 arg2')
...
(celery
并且huey
命令是通过我的包的 pip 依赖项安装的。)
这通常可以正常工作,除非有人mycmd
直接调用而不激活它的 virtualenv。例如,我试图mycmd
在过程控制系统内部使用“circusd”。请参阅此处circus.ini
文件直接调用的位置venv/bin/chaussette
,而无需实际激活venv
. 如果我这样做,我会收到消息celery: No such file or directory
,我想是因为 virtualenv 没有被激活,因此在路径上找不到这些命令。
即使 virtualenv 未激活,我如何确保当有人运行时mycmd
正确运行?celery
(如果这个人根本不使用 virtualenv 和跨平台等,也应该可以工作)
顺便说一句,我不是subprocess.Process
直接使用,而是使用Honcho,它提供了一个围绕它的层。