python - sudo pipenv 运行问题
问题描述
我正在尝试将 scapy 和 netfilterqueue 与 python 3.6.1 一起使用。我创建了一个安装了这些的环境.. 因为 netfilterqueue 在 python 3.9 上不起作用。
当我尝试运行我的脚本时:
pipenv run python3 test.py
它在正确的环境中运行,但我得到:
PermissionError: [Errno 1] Operation not permitted
当我尝试使用 sudo 运行时:sudo pipenv run python3 test.py
我得到:
Warning: Python 3.6.1 was not found on your system…
You can specify specific versions of Python with:
$ pipenv --python path/to/python
我已验证我的库已正确安装在环境中,但我不确定如何传递运行脚本的权限。谢谢!
──(kali㉿bad)-[~/Desktop/env]
└─$ pipenv shell
Launching subshell in virtual environment...
. /home/kali/.local/share/virtualenvs/env-_HkHVbK0/bin/activate
WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.
┌──(kali㉿bad)-[~/Desktop/env]
└─$ . /home/kali/.local/share/virtualenvs/env-_HkHVbK0/bin/activate
┌──(env-_HkHVbK0)(kali㉿bad)-[~/Desktop/env]
└─$ python3
Python 3.6.1 (default, May 12 2021, 17:05:21)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import scapy
>>> import netfilterqueue
>>> import sys
>>> sys.path
['', '/home/kali/.pyenv/versions/3.6.1/lib/python36.zip', '/home/kali/.pyenv/versions/3.6.1/lib/python3.6', '/home/kali/.pyenv/versions/3.6.1/lib/python3.6/lib-dynload', '/home/kali/.local/share/virtualenvs/env-_HkHVbK0/lib/python3.6/site-packages']
>>>
解决方案
我确实有类似的问题。我设法通过使用 sudo 运行虚拟环境的 Python 可执行文件来解决。例如,如果您的 virtualenv 是 ./AwesomeProject,那么您可以运行 sudo ./AwesomeProject/bin/python 以使用具有 root 权限的 virtualenv 的脚本。
要查找虚拟环境的 Python 可执行文件(例如:./AwesomeProject/bin/python)的位置,请在虚拟环境中运行
whereis python
更多信息: https ://askubuntu.com/questions/234758/how-to-use-a-python-virtualenv-with-sudo
推荐阅读
- java - 如何解决 Netbeans 12.0 IllegalAccessError?
- sql - 如何通过 SSMS 连接到 SQL Server 并且不了解命名约定?
- moodle - 项目具有不同范围时的加权平均聚合
- java - 如何在存档文件中提取 .Z 文件?(未定义)大小但在 android studio java 中未损坏
- pandas - 列的平均值是一个 NaN 值
- github - 如何为每个作业而不是每个工作流设置事件触发器?
- python - 按分数比较数据框列中的值
- javascript - Top.gg vote webhook (discord.js)
- vb.net - 水晶报表上的多个起点
- javascript - 如何验证十进制数是否在序列 0.001、0.002、...、2.048 中