[英]virtualenv & subprocess: How to get the correct path to a script
當有人安裝我的Python軟件包時,他們可以使用命令mycmd
(這是添加到python bin/
目錄中的控制台腳本)。 反過來, mycmd
推出采用幾種其他的Python腳本控制台subprocess
:
subprocess.Process('celery arg1 arg2') subprocess.Process('huey arg1 arg2') ...
( celery
和huey
命令是通過我的軟件包的pip依賴項安裝的。)
這通常可以很好地工作,除非有人直接調用mycmd
而不激活其virtualenv。 例如,我試圖在過程控制系統“ circusd”中使用mycmd
。 請參見此處 circus.ini
文件在不實際激活venv
情況下直接調用venv/bin/chaussette
的venv
。 如果這樣做,我得到的消息是celery: No such file or directory
,我想是因為virtualenv未激活,因此在路徑上找不到這些命令。
我如何確保當有人運行mycmd
時,即使未激活virtualenv,也可以運行正確的celery
? (如果該人根本不使用virtualenv和跨平台等,也應該可以使用。)
順便說一句,我沒有使用subprocess.Process
直接,而是使用本町 ,圍繞它提供了一個層。
我只需將我的virtualenv bin
路徑添加到circus
使用的PATH
即可解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.