使用Paramiko SSH设置virtualenv

使用Paramiko SSH设置virtualenv,第1张

概述我在 Windows中使用 Python和Django的经验有限,现在我想了解如何将我的代码部署到Ubuntu 16.04 LTS VPS.在SE上阅读了各种教程和大量答案之后,我设法走得很远(好吧,对我而言),但现在我被卡住了. 手动(通过Putty)我可以做以下事情: # check that Python 3.5 is installedpython3 --version # inst 我在 Windows中使用 Python和Django的经验有限,现在我想了解如何将我的代码部署到Ubuntu 16.04 LTS VPS.在SE上阅读了各种教程和大量答案之后,我设法走得很远(好吧,对我而言),但现在我被卡住了.

手动(通过Putty)我可以做以下事情:

# check that Python 3.5 is installedpython3 --version  # install pipsudo -kS apt-get -y install python3-pip  # upgrade pip to newest versionpip3 install --upgrade pip# check resultpip3 --version  # install venvsudo -kS pip3 install virtualenv virtualenvwrapper # create venvvirtualenv ~/Env/firstsite  # make sure venv is created ls -l ~/Env/firstsite/bin/python  # /home/droplet/Env/firstsite/bin/python3.5 -> python3# switch on venvsource ~/Env/firstsite/bin/activate  # (firstsite) droplet@hostname:~$# check that python3 is taken from venvwhich 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.所以我认为源激活不能通过Paramiko的SSH工作.

>为什么?
>我该如何应对?
>我可以通过更直接(和可靠)的方式检查venv是否已启用?

解决方法 取自@Pablo Navarro的答案: How to source virtualenv activate in a Bash script帮助我解决了同样的问题(在paramiko ssh会话中激活环境).

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

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

在我的情况下(使用miniconda和一个名为pyODBC的env):

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

运行命令〜/ miniconda2 / envs / pyODBC / bin / python -m pip List打印此env中的模块列表以确认

总结

以上是内存溢出为你收集整理的使用Paramiko SSH设置virtualenv全部内容,希望文章能够帮你解决使用Paramiko SSH设置virtualenv所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1196176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存