gpt4 book ai didi

python - 使用 Paramiko SSH 设置 virtualenv

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:28 24 4
gpt4 key购买 nike

我在 Windows 中使用 Python 和 Django 的经验有限,现在我正在尝试了解如何将我的代码部署到 Ubuntu 16.04 LTS VPS。在阅读了关于 SE 的各种教程和大量答案后,我设法进行了相当多的工作(对我来说),但现在我被困住了。

手动(通过 Putty)我可以执行以下操作:

# check that Python 3.5 is installed
python3 --version
# install pip
sudo -kS apt-get -y install python3-pip
# upgrade pip to newest version
pip3 install --upgrade pip
# check result
pip3 --version
# install venv
sudo -kS pip3 install virtualenv virtualenvwrapper
# create venv
virtualenv ~/Env/firstsite
# make sure venv is created
ls -l ~/Env/firstsite/bin/python # /home/droplet/Env/firstsite/bin/python3.5 -> python3
# switch on venv
source ~/Env/firstsite/bin/activate # (firstsite) droplet@hostname:~$
# check that python3 is taken from venv
which python3 # /home/droplet/Env/firstsite/bin/python3

因此正确创建并打开了虚拟环境。我可以继续安装 Django。

然而,当我试图在自动化机制中做完全相同的事情时,使用 Paramiko(我使用 paramiko.SSHClient().exec_command(cmd, input_string, get_pty=False 执行命令),一切以完全相同的方式进行,直到最后一个命令:

exec_command('which python3')

返回 /usr/bin/python3。所以我假设 source activate 不能通过 Paramiko 的 SSH 工作。

  1. 为什么?
  2. 我该如何应对?
  3. 我可以通过更直接(和可靠)的方式检查是否启用了 venv 吗?

最佳答案

摘自@Pablo Navarro 的回答:How to source virtualenv activate in a Bash script帮助我解决了同样的问题(在 paramiko ssh session 中激活环境)。

在 exec_command 中给出环境中 python 可执行文件的路径,例如:

stdin, stdout, stderr = ssh.exec_command(/path/to/env/bin/python script.py)

在我的例子中(使用 miniconda 和一个名为 pyODBC 的环境):

stdin, stdout, stderr = ssh.exec_command(~/miniconda2/envs/pyODBC/bin/python run_script.py)

运行命令 ~/miniconda2/envs/pyODBC/bin/python -m pip list 打印此环境中的模块列表以确认

关于python - 使用 Paramiko SSH 设置 virtualenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38793109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com