Giter Club home page Giter Club logo

Comments (7)

guilhem avatar guilhem commented on August 23, 2024

@nailor We can use this http://virtualenv.readthedocs.org/en/latest/virtualenv.html#making-environments-relocatable

I using it to do same thing than dh-virtualenv but manually.
shebang become:

#!/usr/bin/env python2.7

import os; activate_this=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'activate_this.py'); exec(compile(open(activate_this).read(), activate_this, 'exec'), dict(__file__=activate_this)); del os, activate_this

from dh-virtualenv.

jhermann avatar jhermann commented on August 23, 2024

This would also be an elegant solution for #48, btw. The "--system-site-packages" handling would have to be investigated, though – but for a debianzed virtualenv, having the system packages available is not the worst thing that can happen.

Also, referencing /usr/bin/python* directly might be the better choice, I don't really want an activated virtualenv in my home influence a package-installed app.

from dh-virtualenv.

nailor avatar nailor commented on August 23, 2024

@guilhem: I'm not too big fan of the --relocatable flag. It is on the way out of virtualenv (well, has been like that for a loooooong time) plus there are some issues with it. Possibly the activate_this.py trick might work, but feels a bit ugly (limited to bin directory only, for example, though this is a thing that can be worked around). While the 127 can be kind annoying, don't really know how real problem this is. Anyway, definitely something we could experiment with!

@jhermann: Pointing to system python might be problematic regarding python paths etc. System packages should be available via a flag, but by default they can cause a lot of confusion.

from dh-virtualenv.

jhermann avatar jhermann commented on August 23, 2024

Including a modified version of https://github.com/jordansissel/shebang (that uses the shebang executable location to allow relative references to the wanted command) might help.

from dh-virtualenv.

nailor avatar nailor commented on August 23, 2024

@jhermann That still has the problem of the line being longer than 127 characters, which is set in the kernel by BINPRM_BUF_SIZE.

from dh-virtualenv.

jhermann avatar jhermann commented on August 23, 2024

OK, slight variation then, install the launcher tool to e.g. /usr/bin/dh-venv-launch, and have it examine the script for its containing directory, then tack on the requested binary (i.e. "python") relative to that. That does require a sub-package of dh-virtualenv (e.g. dh-virtualenv-runtime or dh-virtualenv-support) that also gets deployed to the target machines once (created packages would Depend on that, and share it).

Bang paths would look like this (always):

    #!/usr/bin/dh-venv-launch python

POC:

    $ head -99 *.sh
    ==> launch.sh <==
    #!/bin/bash
    interpreter="$1"; shift
    script="$1"; shift
    exec $(dirname "$script")"/$interpreter" "$script" "$@"

    ==> test.sh <==
    #!launch.sh python
    print("Yay!")

    $ ./test.sh 
    Yay!

from dh-virtualenv.

nailor avatar nailor commented on August 23, 2024

Closing this as not sure if fixing this after the upcoming default install path change makes any sense.

from dh-virtualenv.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.