help-gnu-emacs
[Top][All Lists]
Advanced

[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: Fri, 19 Jul 2019 09:04:03 +0800

Hi, Bruno,

Customizing the tramp-remote-path works for me. Thanks!

On Fri, Jul 19, 2019 at 12:44 AM Bruno Barbier <address@hidden> wrote:

>
> Hi Zhongwei,
>
> Zhongwei Yao <address@hidden> writes:
>
> > ...
>
> > Emacs reset the PATH at somewhere and it leads to can't find the python
> in
> > the virtual-env!
> >
> > ...
> >
> > I have not found where emacs sets (reset) the PATH yet.
> >
> Indeed, same here.
>
> Look at:
>
>     (customize-variable 'tramp-remote-path)
>
> If you add the symbol tramp-own-remote-path to the list, tramp will also
> add your existing remote PATH, when redefining the PATH. It's working
> for me. Try with a real existing path, as tramp might remove
> non-existing useless paths.
>
> Bruno
>
>
>
> >
> > On Thu, Jul 18, 2019 at 4:00 AM Bruno Barbier <address@hidden>
> wrote:
> >
> >>
> >> Hi Zhongwei,
> >>
> >> Zhongwei Yao <address@hidden> 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 <
> address@hidden>
> >> > wrote:
> >> >
> >> >> Zhongwei Yao <address@hidden> 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.
> >> >>
> >>
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]