使用Paramiko SSH设置virtualenv
发布时间:2020-12-20 13:13:35 所属栏目:Python 来源:网络整理
导读:我在 Windows中使用 Python和Django的经验有限,现在我想了解如何将我的代码部署到Ubuntu 16.04 LTS VPS.在SE上阅读了各种教程和大量答案之后,我设法走得很远(好吧,对我而言),但现在我被卡住了. 手动(通过Putty)我可以做以下事情: # check that Python 3.5 i
我在
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.所以我认为源激活不能通过Paramiko的SSH工作. >为什么? 解决方法
取自@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中的模块列表以确认 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |