【问题标题】:Executing script with sudo in virtual environment - packages not found在虚拟环境中使用 sudo 执行脚本 - 找不到包
【发布时间】:2016-01-13 10:17:58
【问题描述】:

我创建了一个虚拟环境并在其中编写了一个 Scapy 项目。为此,我编写了一些模块和包,并将它们放在环境站点包文件夹中。现在,当我使用source bin/activate 进入环境并尝试使用sudo 执行脚本时,我在虚拟环境中的站点包文件夹中找不到一些模块。当我以普通用户身份执行它时,会找到该模块,但是该脚本当然不起作用,因为它需要超级用户权限。我该如何解决这个问题?

(Project)user@pc ~/git/Fuzzing/src $ python BACnetMonitoring.py 
WARNING: No route found for IPv6 destination :: (no default route?)
Traceback (most recent call last):
  File "BACnetMonitoring.py", line 17, in <module>
    webRequest_timeout=1
  File "/home/user/git/Fuzzing/local/lib/python2.7/site-packages/BACnetMonitor.py", line 78, in __init__
    self._socket = conf.L2socket(iface=self._iface)
  File "/home/user/git/Fuzzing/local/lib/python2.7/site-packages/scapy/arch/linux.py", line 414, in __init__
    self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
  File "/usr/lib/python2.7/socket.py", line 187, in __init__
    _sock = _realsocket(family, type, proto)
socket.error: [Errno 1] Operation not permitted
(Project)user@pc ~/git/Fuzzing/src $ sudo python BACnetMonitoring.py  
Traceback (most recent call last):
  File "BACnetMonitoring.py", line 7, in <module>
    import BACnetMonitor
ImportError: No module named BACnetMonitor
(Project)user@pc ~/git/Fuzzing/src $

【问题讨论】:

    标签: python linux virtualenv scapy


    【解决方案1】:

    sudo 不会继承您的环境。指定项目的 python 可执行文件的完整路径。

    查看sys.executable 有和没有sudo

    【讨论】:

    • 好的,这很有趣。使用sudo,路径是/usr/bin/python,没有它是/home/user/git/Fuzzing/bin/python。这就解释了为什么,但仍然 - 有没有办法解决这个问题?
    • "有没有办法解决这个问题?" -- "指定项目的 python 可执行文件的完整路径。" 即:@987654327 @
    • 谢谢,其实很简单。
    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2018-01-11
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多