[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to let tramp be aware the virtualenv?
From: |
Zhongwei Yao |
Subject: |
Re: How to let tramp be aware the virtualenv? |
Date: |
Thu, 18 Jul 2019 21:21:24 +0800 |
Hi, Bruno,
I tried your suggestion again. And changed it to:
RequestTTy force
RemoteCommand bash -c 'export PATH=mypath:$PATH; export FOO=bar; bash
-l'
And if use "env" as my compile command, it prints:
FOO=bar
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
But if I ssh to that machine directly in the terminal(out side of emacs)
and type "env", I got:
FOO=bar
PATH=mypath:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
Emacs reset the PATH at somewhere and it leads to can't find the python in
the virtual-env!
And my environment is Emacs 26.1 on mac and tramp-version 2.3.3.26.1. I
test this by emacs -Q and also remove remote machine's .bashrc.
I also tried Michael's 'explicit-bash-args . ("-i" "-l")', and run "M-x
compile" and get a similar result: I can set other ENV variable (like FOO)
but can not set the PATH variable.
I have not found where emacs sets (reset) the PATH yet.
On Thu, Jul 18, 2019 at 4:00 AM Bruno Barbier <brubar.cs@gmail.com> wrote:
>
> Hi Zhongwei,
>
> Zhongwei Yao <ashi08104@gmail.com> writes:
>
> > Thanks. I try emacs27 and using connection-local-set-profiles. And I can
> > run into bash in compile command. But running into bash is not my
> > objective. (I try to add source my/python/virtualenv/bin/activate to
> > bashrc, and it doesn't work. The bash run in non-interative shell and
> seems
> > doesn't read my bashrc).
> >
> > I want to make the compilation under tramp know which python virtual env
> is
> > activate. Currently, I have a workaround by using the following compile
> > command:
> > . /path/to/the/virtual/env/activate && python --version
> >
> > But it is in-convenient that each compile command needs a ".
> /xxx/activate"
> > prefix. I don't know whether there is a way to make the compile command
> > aware of which virtualenv is activate without using such prefix.
> >
> I'm using:
> emacs 26.1
> tramp 2.3.3.26.1
>
> It's just working for me; so, I don't understand what I'm missing here
> (sorry about the bash 'source' thing).
>
> The only thing, that I did, is to configure SSH so that it gives a
> proper shell to tramp.
>
> Host nice-tramp
> HostName xxx.xxx.xxx.xxx
> RequestTTy force
> RemoteCommand dash -c '. path/to/my-init.sh; dash -l'
>
>
> As said by Michael, in another email in this thread, your problem is
> probably not with tramp.
>
> What do you get when connecting directly using SSH in a console ? (you
> need to get a proper shell, with prompt/input/output/echo).
>
> If I type:
> ssh nice-tramp
>
> I'm connected, getting a shell with a prompt (the thing that tramp needs
> to work), and, that shell works like any console shell: input, echo,
> prompt.
>
> If I enter, in this shell the command:
> type $0
>
> I get:
> dash is /bin/dash
>
> (yes, I installed 'dash', just to double-check what I could be missing)
>
>
> Once this is working, in Emacs, I do:
>
> /ssh:nice-tramp:/whatever/path/
>
> and Emacs/Tramp shows me the directory
>
> In this directory, if I do 'M-x shell', I get a remote shell, on this
> directory.
>
> My init script contains:
> export MY_VIRTUAL_ENV="Yes"
>
> And, after 'M-x shell', entering: 'export | grep MY', I get:
> declare -x MY_VIRTUAL_ENV="Yes"
>
> (my 'sh' is 'bash', not using Ubuntu, that's tramp shell, and it's
> fine for me)
>
>
> If I enter, M-x compile "echo $MY_VIRTUAL_ENV", I'm getting a compilation
> buffer with:
>
> echo $MY_VIRTUAL_ENV
> Yes
>
>
> So only configuring SSH works for me. I'm not sure I understand what's
> not working for you. Once Tramp gets a proper shell, it should just work
> (it can be sh, bash, dash, etc.). Just provide a proper interactive
> shell, and let tramp take it from there.
>
> Any idea what test I can do to understand what I'm missing ?
>
>
>
> Bruno
>
>
>
>
>
> > On Wed, Jul 17, 2019 at 7:34 PM Michael Albinus <michael.albinus@gmx.de>
> > wrote:
> >
> >> Zhongwei Yao <ashi08104@gmail.com> writes:
> >>
> >> > Hi, Michael,
> >>
> >> Hi,
> >>
> >> > I try to set the remote-shell to /bin/bash, and from tramp log, there
> >> > is:
> >> > xx8:15.682748 tramp-get-connection-property (7) # remote-shell
> >> > /bin/bash
> >>
> >> Good.
> >>
> >> > And I notice there is log line like:
> >> > 38:15.720661 tramp-send-command (6) # cd
> >> > /home/user/projects/foo/build/ && exec <<'6xxa3a8f7393fxxx' env
> >> > PS1\=/ssh\:remote_machine\:/home/user/projects/foo/build/\ \#\$\
> >> > TERMCAP\= COLUMNS\=134 INSIDE_EMACS\=26.1\,compile /bin/sh
> >> > (
> >> > echo $BASH_VERSION
> >> > ) </dev/tty
> >> > 6xxa3a8f7393fxxx
> >> >
> >> > It is still using /bin/sh.
> >>
> >> This isn't any longer Tramp. *This* hard coded /bin/sh comes from the
> >> compile command.
> >>
> >> Apparently, you're using Emacs 26. In Emacs 27, compile can be
> >> configured to use connection local variables, which would overwrite
> >> this.
> >>
> >> Do you have a chance to run the development version of Emacs?
> >>
> >> Best regards, Michael.
> >>
>
- Re: How to let tramp be aware the virtualenv?, (continued)
- Re: How to let tramp be aware the virtualenv?, Michael Albinus, 2019/07/16
- Re: How to let tramp be aware the virtualenv?, Bruno Barbier, 2019/07/16
- Re: How to let tramp be aware the virtualenv?, Zhongwei Yao, 2019/07/16
- Re: How to let tramp be aware the virtualenv?, Michael Albinus, 2019/07/17
- Re: How to let tramp be aware the virtualenv?, Zhongwei Yao, 2019/07/17
- Re: How to let tramp be aware the virtualenv?, Michael Albinus, 2019/07/17
- Re: How to let tramp be aware the virtualenv?, Zhongwei Yao, 2019/07/17
- Re: How to let tramp be aware the virtualenv?, Michael Albinus, 2019/07/17
- Re: How to let tramp be aware the virtualenv?, Yuri Khan, 2019/07/17
- Re: How to let tramp be aware the virtualenv?, Bruno Barbier, 2019/07/17
- Re: How to let tramp be aware the virtualenv?,
Zhongwei Yao <=
- Re: How to let tramp be aware the virtualenv?, Bruno Barbier, 2019/07/18
- Re: How to let tramp be aware the virtualenv?, Zhongwei Yao, 2019/07/18