解决Python虚拟环境下不能使用sudo提升权限问题

article/2023/10/1 3:26:12

问题描述

在虚拟环境下,执行某些命令需要有sudo提升权限,会导致该条命令退出虚拟环境:

如启动django 服务,需要监听80端口:

$: python manage.py runserver 80
Performing system checks...System check identified no issues (0 silenced).
March 15, 2018 - 07:43:40
Django version 2.0.3, using settings 'helloworld.settings'
Starting development server at http://127.0.0.1:80/
Quit the server with CONTROL-C.
Error: You don't have permission to access that port.

此时会提示权限不足,无法访问80端口。

所以通过sudo提升命令权限:

$: ~/python3env/helloworld$ sudo python manage.py runserver 80
Traceback (most recent call last):File "manage.py", line 11, in <module>"Couldn't import Django. Are you sure it's installed and "
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

此时会提示没有找到Django模块,可是经过如下验证,Django模块安装正常:

$: python
Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.__version__
'2.0.3'

而使用sudo启动python,会发现,Django模块无法导入:

$: sudo python
Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ImportError: No module named django

原来,在使用sudo执行命令的时候,该命令会退出当前虚拟环境执行:

$: sudo which python
/usr/bin/python
$: which python
/home/hzc/python3env/venv/bin/python

解决办法

  1. 指定python路径

    $: sudo ../venv/bin/python manage.py runserver 80
    Performing system checks...System check identified no issues (0 silenced).
    March 15, 2018 - 07:55:29
    Django version 2.0.3, using settings 'helloworld.settings'
    Starting development server at http://127.0.0.1:80/
    Quit the server with CONTROL-C.
    
  2. 在脚本中指定python地址(局限于执行脚本)

    #!/usr/bin/env python 更改前
    #!/home/hzc/python3env/venv/bin/python 更改后

    执行脚本:

    $: sudo ./manage.py runserver 80
    Performing system checks...System check identified no issues (0 silenced).
    March 15, 2018 - 08:02:48
    Django version 2.0.3, using settings 'helloworld.settings'
    Starting development server at http://127.0.0.1:80/
    Quit the server with CONTROL-C.

http://www.ngui.cc/article/show-738698.html

相关文章

搭建游戏平台有哪些优势?

1、游戏厂商依靠游戏门户难以搭建起游戏平台 就大游戏厂商而言&#xff0c;他们想要依赖于已有的玩家&#xff0c;以搭建一个平台。其实&#xff0c;所有的游戏厂商都有一个官方的游戏入口&#xff0c;他们的首要任务就是发布游戏资讯&#xff0c;把游戏的官方网址和相关的服务…

大数据人工智能实验室-大数据培训方案

随着计算机和信息技术的迅猛发展和普及应用&#xff0c;行业应用系统的规模迅速扩大&#xff0c;行业应用所产生的数据呈爆炸性增长。企业需要将隐藏在大批杂乱无章的数据中进行信息的集中、萃取和提炼&#xff0c;找出所研究对象的内在规律&#xff0c;从而对决策提供帮助&…

【Python游戏】Python实现一个植物大战僵尸小游戏,非常简单,可以用于做毕业设计哟 | 附源码

前言 halo&#xff0c;包子们下午好 今天给打击整一个植物大战僵尸 无广告版本 哈哈 说实话&#xff0c;现在的小游戏很多都是有广告&#xff0c;多少有点难受 今天给大家直接安排 相关文件 关注小编&#xff0c;私信小编领取哟&#xff01; 当然别忘了一件三连哟~~ 源码点…

如何从 Power BI 示例中获取数据以供练习

如果您是 Power BI 初学者, Microsoft Power BI 教程中提供的示例是入门的好地方。 在这篇文章中,我将按照步骤在 excel 中查看示例数据,以便您可以将这些数据用于练习目的。 下载 Excel 文件 首先,在浏览器中打开人力资源数据。文包含有关如何使用数据构建 Power BI 报…

数组重排(冬季每日一题 25)

给定一个数组 a1,a2,…,ana_1,a_2,…,a_na1​,a2​,…,an​。 如果数组 aaa 满足对于任意 1≤i<j≤n1≤i<j≤n1≤i<j≤n&#xff0c;j−aj≠i−aij−a_j≠i−a_ij−aj​​i−ai​ 均成立&#xff0c;则称数组 aaa 是一个好数组。 现在&#xff0c;请你通过将数组 …

【论文笔记】DEEP FEATURE SELECTION-AND-FUSION FOR RGB-D SEMANTIC SEGMENTATION

论文 题目&#xff1a;DEEP FEATURE SELECTION-AND-FUSION FOR RGB-D SEMANTIC SEGMENTATION 收录于&#xff1a;ICME 2021 论文&#xff1a;Deep Feature Selection-And-Fusion for RGB-D Semantic Segmentation | IEEE Conference Publication | IEEE Xplore [2105.04102]…

Python全局解释器锁或GIL锁

GIL锁: Python全局解释器锁或GIL是一种互斥锁(或锁),仅允许一个线程持有Python解释器的控制权。这意味着在

java计算机毕业设计仟侬堂茶具网站源程序+mysql+系统+lw文档+远程调试

java计算机毕业设计仟侬堂茶具网站源程序mysql系统lw文档远程调试 java计算机毕业设计仟侬堂茶具网站源程序mysql系统lw文档远程调试本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;idea eclipse 前端技术&#…

学会这些C语言技巧,你的编程能力大大提升

一、函数指针 在讲回调函数之前&#xff0c;我们需要了解函数指针。 我们都知道&#xff0c;C语言的灵魂是指针&#xff0c;我们经常使用整型指针&#xff0c;字符串指针&#xff0c;结构体指针等 int *p1; char *p2; STRUCT *p3; //STRUCT为我们定义的结构体 但是好像我们…

11. softmax回归的简洁实现

通过深度学习框架的高级API也能更方便地实现softmax回归模型。 继续使用Fashion-MNIST数据集&#xff0c;并保持批量大小为256。 import torch from torch import nn from d2l import torch as d2lbatch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch…