【问题标题】:Unable to sudo python but I can python without sudo无法使用 sudo python 但我可以在没有 sudo 的情况下使用 python
【发布时间】:2017-04-28 21:25:09
【问题描述】:

我正在对我的 linux 机器进行一些维护(通过 ssh 进行 rhel),但是当我去运行一个 python 脚本时:

asemani$ python3.6 get-pip.py
  File "get-pip.py", line 20061, in <module>
    main()
  File "get-pip.py", line 194, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
  File "/tmp/tmp04ft8p5f/pip.zip/pip/__init__.py", line 26, in <module>
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
  File "/tmp/tmp04ft8p5f/pip.zip/pip/utils/__init__.py", line 27, in <module>
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
  File "/tmp/tmp04ft8p5f/pip.zip/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
  File "/tmp/tmp04ft8p5f/pip.zip/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
  File "/tmp/tmp04ft8p5f/pip.zip/pip/_vendor/pkg_resources/__init__.py", line 3031, in _initialize_master_working_set
  File "/tmp/tmp04ft8p5f/pip.zip/pip/_vendor/pkg_resources/__init__.py", line 651, in _build_master
  File "/tmp/tmp04ft8p5f/pip.zip/pip/_vendor/pkg_resources/__init__.py", line 644, in __init__
  File "/tmp/tmp04ft8p5f/pip.zip/pip/_vendor/pkg_resources/__init__.py", line 700, in add_entry
  File "/tmp/tmp04ft8p5f/pip.zip/pip/_vendor/pkg_resources/__init__.py", line 2017, in find_on_path
PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.6/site-packages/setuptools-28.8.0.dist-info'

当我尝试使用 sudo 时:

asemani$ sudo python3.6 get-pip.py'
[sudo] password for asemani: 
sudo: python3.6: command not found

Python 无法识别?到底是怎么回事?如何在 python3.6 上使用 sudo。我很确定我安装正确。

编辑:

方法一:

[asemani@746c9prda5r asemani]$ sudo -E python3.6 get-pip.py
sudo: python3.6: command not found

方法2:

[asemani@746c9prda5r asemani]$ sudo /usr/local/bin/python3.6 get-pip.py 
[sudo] password for asemani: 
Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f0c4b78d908>, 'Connection to pypi.python.org timed out. (connect timeout=15)')': /simple/pip/
^COperation cancelled by user

【问题讨论】:

  • 试试sudo -E python3.6 get-pip.py
  • @Dalvenjia 你是说-E-esudoedit 的作用相同。
  • 更新问题

标签: python linux rhel


【解决方案1】:

看起来 sudo 正在从环境中丢失您的 PATH,您需要将完整路径传递给 python3.6:

which python3.6

这将为您提供完整路径,例如/opt/bin/python3.6

那你需要做的

sudo /opt/bin/python3.6 get-pip.py

【讨论】:

  • 我收到超时错误,我已经更新了我的问题以显示这个
【解决方案2】:

必须是 Python 路径未在 PATH 环境变量中设置: 尝试按照以下步骤操作:

搜索安装python的路径

ls -lrth /usr/local/bin/python3.5

-rwxr-xr-x。 2 root root 12M Mar 22 15:55 /usr/local/bin/python3.5

1)添加python路径

vim ~/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/bin/python3.5

导出路径

2)打开新会话(putty 或任何其他喜欢的)

3)python在哪里

4)现在应该可以工作或者你可以直接执行程序

/usr/local/bin/python3.5 mydemo1.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2018-08-19
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多