virtualenvwrapper,python 脚本中的 add2virtualenv

问题描述

我有一个包含类似文件的项目:

├── main_folder
    ├── my_folder
          ├── my_file.py
    ├── main_file.py

main_file.py 中,我试图运行以下命令:

import subprocess
subprocess.getstatusoutput(f'add2virtualenv FULL_PATH_TO_PROJECT/main_folder')

但作为回应,我得到了 (127,'/bin/sh: 1: add2virtualenv: not found')
我该如何解决它以便我可以在下面的 my_file.py 行中使用:

from main_file import something

解决方法

add2virtualenv 和其他 virtualenvwrapper 的命令是在 virtualenvwrapper.sh 中定义的 shell 函数;要调用它们,您首先需要在同一个 shell 中获取 virtualenvwrapper.sh。另请注意,它们适用于 bashzsh,但不适用于 /bin/sh

所以我的建议是创建一个 bash 脚本:

#! /usr/bin/env bash
source `which virtualenvwrapper.sh`
add2virtualenv "$1"

并将其称为子进程:

subprocess.getstatusoutput(f'myscript FULL_PATH_TO_PROJECT/main_folder')