如何在sudo中使用python virtualenv?
我试图在不在/ home下的目录中创建一个与系统(使用virtualenv)分离的python环境,因为我需要使用它来构建其他必须可供多个用户访问的软件。 我可以创建并激活virtualenv,但是当我sudo
一些命令(例如制作或编译其他软件)时,它是使用的系统python(我可以告诉因为可用的模块)。
因为在Ubuntu上使用root用户并不是一件好事,有没有办法告诉sudo
使用virtualenv? 或许这可能不是正确的方法,我应该做一个全新的python安装?
我使用的是64位版本的Ubuntu 12.04(和python 2.7)。
问题几乎可以肯定,当你运行sudo
,virtualenv环境变量,别名,函数等不会被转移。
解决方案是使用sudo
显式运行虚拟环境的Python可执行文件。 例如,如果你的virtualenv是./AwesomeProject,那么你可以运行sudo ./AwesomeProject/bin/python
来使用带有root权限的virtualenv的脚本。
只是偶然发现了这个问题,对于可能发现同样问题的其他人来说,肯是正确的,因为env变量没有被转移。 我使用的解决方案是将以下行添加到我的脚本中。 这具有始终直接从脚本加载虚拟环境的额外好处。 (这意味着您可以将脚本与crontab或launchd一起使用,而无需任何其他解决方法。)
base_dir = os.path.dirname(os.path.abspath(__file__)) activate_this = os.path.join(base_dir, 'venv/bin/activate_this.py') execfile(activate_this, dict(__file__=activate_this))
更多背景信息: https : //virtualenv.pypa.io/en/latest/userguide.html#using-virtualenv-without-bin-python
有时你需要更新$ PATH,因为脚本运行其他程序。 例如,pypi-install需要在PATH中使用py2dsc-deb。 此命令有效: sudo sh -c ". venv/bin/activate ; pypi-install $PACKAGE"
- Python源代码在哪里?
- 致命的Python错误:Py_Initialize:无法获取语言环境编码…语法错误:无效语法已中止(核心转储)
- easy_install pygame由于“linux / videodev.h:没有这样的文件或目录”错误而无法正常工作
- Ubuntu 14.04上的Apache2.4.7不会执行Python cgi文件。 该站点显示python代码
- Ubuntu文件管理器没有显示正确的图标
- 如何使用源代码的最新版本更新ubuntu的python?
- 如何在Ubuntu 14.04中将python 3设置为默认解释器
- 如何在Ubuntu上安装PyPy3(2.1,beta)?
- 如何直接运行Python程序?