【问题标题】:Activating VirtualEnv in remote machine and update python path在远程机器中激活 VirtualEnv 并更新 python 路径
【发布时间】:2019-05-20 19:37:08
【问题描述】:

我有两台 ubuntu 机器,一台在本地,一台在云端。云上的那个有一个 virtualenv,所有程序都设计为在 virtualenv 中运行。我对云机器具有 ssh 访问权限和 root 访问权限。我正在尝试从本地机器执行 bash 脚本/python 脚本。但是,我只在激活 virtualenv 时被困了 2 天,没有运气。以下是我最近的试验:

通过post,我已经创建了 .sh 文件。此文件在从云计算机执行时有效,但在我的本地计算机执行时无效。我尝试了各种排列和组合,但无法正常工作。

我的 bashrc 有以下几行:

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

最新的配置在我的 bash 脚本中:

if (tty -s); then
    source /home/ubuntu/.virtualenvs/venv/bin/activate
    export PYTHONPATH=$PYTHONPATH:/home/ubuntu/models/research:/home/ubuntu/models/research/slim
fi

而我的本地脚本如下:

ssh -i mypem.pem ubuntu@12.34.56.789 "source .bashrc"
ssh -i mypem.pem ubuntu@12.34.56.789 "python /home/ubuntu/build_records.py"

我已经尝试了上述无数种组合,但无法让它们发挥作用。即使机器使用 venv 作为默认环境启动,我也可以,我通过 bash 脚本尝试过......但它不起作用。

【问题讨论】:

    标签: bash virtualenv


    【解决方案1】:

    一步到位:

    ssh -i mypem.pem ubuntu@12.34.56.789 "
        source .bashrc && python /home/ubuntu/build_records.py"
    

    这是必要的,因为source .bashrc 的所有效果都消失了 当 shell 和 ssh 客户端完成时。

    【讨论】:

    • 谢谢...我昨天确实尝试过这种组合,只是为了确定现在再次尝试...但由于某种原因,没有发生 bashrc 的采购...。我什至尝试指定bashrc 的完整路径...但它没有帮助...不确定在使用源代码之前是否必须使用任何特定的库或命令
    • 为什么你认为远程 shell 没有 source .bashrc
    • 我不确定....已经测试了 100 种组合,甚至创建了一个全新的 ec2 设置....仍然无法运行源代码。例如..我在云中创建了一个可执行的 bash 脚本,其中包含source /path/to/file..并尝试从本地机器执行。不工作。但是,调用不调用 source 的函数(例如 bash yetAnotherScript.sh)是有效的。
    • 终于!!!!!!我让它工作了....bashrc 中的前几行触发了if not running interactively, don't do anything....我只是禁用了它,一切都到位了.....呸....我仍然不确定会发生什么现在错了....但目前我可以远程执行源命令。感谢您的支持
    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    相关资源
    最近更新 更多