Comments (7)
@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.
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.
@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.
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.
@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.
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.
Closing this as not sure if fixing this after the upcoming default install path change makes any sense.
from dh-virtualenv.
Related Issues (20)
- Support disabling pip in installed virtualenvs HOT 6
- `pip` tracebacks when not upgraded in build process and `python-pip-whl` package is not installed HOT 2
- Provide Alternative way to run test to avoid Warning HOT 3
- How to build both Python 2 and 3 packages? HOT 1
- cannot override default postrm/prerm maintenance scripts
- Question: Why skip package that start with python3? HOT 2
- allow multiple requirement files to be passed in HOT 1
- How to expose packages built with this tool on PYTHONPATH HOT 2
- Problem when higher version of setuptools (>44.0.0) is required
- dh-virtualenv package not available on bookworm HOT 1
- When calling /opt/venv/bin/myscript PATH is not properly defined
- fix_shebangs() fails HOT 2
- DH_PIP_EXTRA_ARGS doesn't work
- New Release with Python3.11 Support? HOT 7
- Allow for including pip packages in source tar
- How would I install additional files (e.g. systemd service file)? HOT 5
- -m venv does not understand the --verbose option HOT 1
- dh_strip gets error no dynamic section in dynamic segment HOT 2
- Python not found
- Egg and build files created in main folder
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dh-virtualenv.