让 Python 虚拟环境、Fabric 和 Sudo 协同工作

2024-02-18

重现步骤:

  1. 在 Linux 环境中,在桌面上创建一个名为“fab”的文件夹
  2. 仅供参考,我正在使用 zsh
  3. cd to ~/Desktop/fab
  4. 运行这个fabfile.py通过发出在您的 ./fab 目录中制作fab init:

    #!/usr/bin/env python
    #set up ssh to remote server
    
    import sys, os, fileinput
    from fabric.api import *
    
    def init():
        local('mkdir ./virtualenv')
        local('cd ./virtualenv && virtualenv --no-site-packages venv')
        local('chown -R user:user ./virtualenv/')
        local('chmod 770 -R ./virtualenv/')
        venv = 'source ./virtualenv/venv/bin/activate && '
        local(venv+'pip install mysql-python django South')
    
  5. 得到这个错误:

    ➜  fab  fab init    
    [localhost] local: mkdir ./virtualenv
    [localhost] local: cd ./virtualenv && virtualenv --no-site-packages venv
    New python executable in venv/bin/python
    Installing distribute...........................................................................................................................................................................................................................done.
    Installing pip................done.
    [localhost] local: chown -R user:user ./virtualenv/
    [lcalhost] local: chmod 770 -R ./virtualenv/
    [localhost] local: source ./virtualenv/venv/bin/activate && pip install mysql-python django South
    /bin/sh: 1: source: not found
    
    Fatal error: local() encountered an error (return code 127) while executing 'source ./virtualenv/venv/bin/activate && pip install mysql-python django South'
    
    Aborting.
    
  6. Run source ./virtualenv/venv/bin/activate && pip install mysql-python django South从 zsh 中,观察它是否有效。

这不是类似的重复问题this https://stackoverflow.com/questions/1180411/activate-a-virtualenv-via-fabric-as-deploy-user,因为即使我使用with prefix(在我的代码中。

有任何想法吗?


Replace source with /bin/bash/。这是一个例子:

from fabric.api import *


def init():
    local('virtualenv --no-site-packages venv')

    venv_command = '/bin/bash venv/bin/activate'
    pip_command = 'venv/bin/pip install mysql-python django South'
    local(venv_command + ' && ' + pip_command)

仅供参考,对于run/sudo最好用prefix上下文管理器,就像建议的那样here https://stackoverflow.com/a/5359988/771848.

希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让 Python 虚拟环境、Fabric 和 Sudo 协同工作 的相关文章

随机推荐

  • 将 google 字体 (fonts.googleapis.com) 添加到 CSP 标头

    我在 gitHub 页面上托管一个个人项目 并使用 cloudflare 强制执行 https 现在我想实施 CSP 政策 我尝试将元标记添加到页面的头部 但我收到以下错误 拒绝加载样式表 https fonts googleapis co
  • VB 按住按键

    我正在创建一个宏程序来记录和回放鼠标和键盘输入 录音效果很好 鼠标播放也很好 但我在播放键盘输入时遇到了麻烦 特别是在释放之前按住某个键几秒钟 这并不等同于重复按键 这是我尝试过的 技术 1 Me KeyDown Private Sub k
  • 从 ASP 脚本使用 dll 的最佳方法

    我正在编写一些 ASP 代码来服务来自公司 Intranet 上的简单 HTML 表单的请求 该代码需要从 COM dll 调用方法 我正在使用代码 myObject Server CreateObject myDLL myClass 但它
  • 简单语法:Alter Table 语句中的多个约束

    如果我有这样的声明 ALTER TABLE RecipeBox Recipe ADD CONSTRAINT AKRecipeBox Recipe Name UNIQUE NONCLUSTERED Name 如何向此语句添加另一个约束 这可能
  • 如何真正删除 VSTS / Azure-devops 上的提交

    我正在开发 VS 2017 我们有云 VSTS Azure devops 我最近提交并推送了 并意识到 8 个文件不应该在其中 之后我再次提交了一份干净的文件并推入远程 现在我可以在 VSTS 网站 portail 中看到这两个提交 问题是
  • 如何使用自定义 python 类型参数发出 PySide 信号?

    我在 PySide python Qt 程序中正确使用信号时遇到问题 我想发出一个信号 该信号采用自定义 python 类型的单个参数 这文档 http www pyside org docs pyside git newsigslot h
  • 删除行时平滑重新加载 uitableview 数据

    我试图在 uitableview 滚动到屏幕底部时重新加载它 我删除前几行并在底部添加更多行 Before新闻行被添加到 uitableview 的数据源中 我称之为 tableview reloaddata 方法 这是因为我希望表视图显示
  • 访问被拒绝:hyperledger Fabric Channel.initialize()

    我正在使用 java sdk 并在初始化通道时遇到错误 Channel mychannel fabClient getInstance newChannel Config CHANNEL NAME Orderer orderer fabCl
  • 在 C++ 中将字符串转换为短字符串

    因此 我四处寻找如何将字符串转换为短整型 并发现了很多有关如何将字符串转换为整数的信息 我会留下一个问题作为对这些线程的评论 但我没有足够的声誉 所以 我想做的是将字符串转换为短字符串 因为数字永远不应该超过三或低于零 并且短字符串可以节省
  • Angular/JavaScript 中 result.id 和 result['id'] 之间的区别?

    我想知道 Angular JavaScript 中的 result id 和 result id 有什么区别 如果我输入 getId this service getId subscribe result gt var i result i
  • Java Bean 作为数据存储类是糟糕的设计吗?

    通常 JavaPractices com 是一个有好想法的好网站 但这个网站让我很困扰 JavaBean 很糟糕 http www javapractices com topic TopicAction do jsessionid 0F0A
  • 日期格式为 dd/MM/yy 的 DateTime.TryParseExact 或 Convert.ToDateTime() 的范围是多少

    我想知道 DateTime TryParseExact 方法或 Convert ToDateTime 以 dd MM yy 作为输入格式的范围 喜欢 DateTime TryParseExact 01 07 05 dd MM yy new
  • ForEach() 方法中的异步 lambda 是如何处理的?

    我们在产品中遇到了一个错误 并将其简化为以下问题 给定一个列表并使用异步 lambda 调用 ForEach Extension 方法 预期的输出顺序是什么 public static async Task Main var strings
  • 如何使包含 numpy 数组的元组可哈希?

    使 numpy 数组可哈希的一种方法是将其设置为只读 这在过去对我有用 但是当我在元组中使用这样的 numpy 数组时 整个元组不再是可散列的 我不明白 这是我为了说明问题而整理的示例代码 import numpy as np npArra
  • 控制导出图表的分辨率

    我有一个 Excel 用户窗体 它允许您将某个工作表中的 Excel 图表保存到 jpg 图像 同时在用户窗体中显示该图表 然而我发现很难控制所述图像的分辨率 分辨率似乎取决于工作表上的缩放量 当我放大时 我会得到高质量的图像 而当我缩小时
  • ModuleNotFoundError:没有名为“keras_preprocessing”的模块

    我正在尝试使用 google colab 上的tensorflow 2 0 实现 YOLO3 对象检测 https github com theAIGuysCode Object Detection API https github com
  • Kubernetes:我如何知道我在哪个节点上?

    如果我 ssh 到 Kubernetes 节点 如何找出该节点的 UUID 以便可以查询主 API 以获取特定于该节点的信息 到目前为止尝试过这个 root 13020 2 5 1 0 410112 41660 Ssl Jan25 26 0
  • make 不支持反引号符号吗?

    Scenario 我在尝试将命令中的值分配给 makefile 中的变量时遇到了一些麻烦 使用反引号表示法似乎工作得很好 但是一旦我使用更现代的 pwd 表示法 变量的值不返回任何内容 cat Makefile FOO moo BAR pw
  • 如何从 javascript 数组本身向图表 js 添加数据?

    我想用chart js http www chartjs org docs 在数据结构数据中 如果我给出的数字为 data 40 80 5 190 56 55 40 工作正常 如果我给出一个数组变量或字符串变量来保存该数字 例如 var m
  • 让 Python 虚拟环境、Fabric 和 Sudo 协同工作

    重现步骤 在 Linux 环境中 在桌面上创建一个名为 fab 的文件夹 仅供参考 我正在使用 zsh cd to Desktop fab 运行这个fabfile py通过发出在您的 fab 目录中制作fab init usr bin en