当有人安装我的Python包时,他们可以使用命令mycmd
(它是添加到python bin/
目录的控制台脚本)。反过来,mycmd
使用subprocess
启动其他几个Python控制台脚本:
subprocess.Process('celery arg1 arg2')
subprocess.Process('huey arg1 arg2')
...
(celery
和huey
命令通过我的软件包的pip依赖项安装。)
这通常可以正常工作,除非有人直接调用mycmd
而不激活其virtualenv。例如,我试图在过程控制系统“circusd”中使用mycmd
。请参阅here circus.ini
文件直接调用venv/bin/chaussette
的位置Honcho,而不实际激活venv
。如果我这样做,我得到消息celery: No such file or directory
,我认为因为virtualenv没有被激活,因此在路径上找不到那些命令。
如果有人运行mycmd
,即使未激活virtualenv,我还能确保运行正确的celery
(并且如果此人也应该工作根本没有使用virtualenv,跨平台等。)
顺便说一下,我没有直接使用subprocess.Process
,而是使用http://docs.oracle.com/javaee/6/api/javax/persistence/criteria/Path.html#get%28java.lang.String%29,它提供了一个图层。
答案 0 :(得分:0)
我只是通过将{virtity bin
路径添加到PATH
使用的circus
来解决这个问题。