【问题标题】:virtualenvwrapper, add2virtualenv from python scriptvirtualenvwrapper,来自 python 脚本的 add2virtualenv
【发布时间】:2021-04-23 13:56:25
【问题描述】:

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

├── 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

【问题讨论】:

    标签: python subprocess virtualenvwrapper


    【解决方案1】:

    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')
    

    【讨论】:

    • 感谢您的评论 :) 立即尝试
    • 所以我在 main_folder 中创建了 myscript,因此它与 main_file 以及我从你那里复制的所有其他内容处于同一级别,我收到错误:127,'/bin/sh:1:myscript:未找到')
    • 如果脚本不在$PATH 中,您应该使用绝对或相对路径调用它。以subprocess.getstatusoutput(f'./myscript FULL_PATH_TO_PROJECT/main_folder') 为例
    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2023-02-11
    • 1970-01-01
    相关资源
    最近更新 更多