无法使用“ python get-pip.py --user”安装pip

时间:2019-01-14 09:50:34

标签: python ubuntu installation pip

我无法使用import random Info1=("Shotgun") Info2=("God's Plan") Info3=("This is me") Info4=("Solo") Info5=("Psyco") Array=[Info1, Info2, Info3, Info4, Info5] RanVar=random.choice(Array) print(RanVar[0]+'?'*(len(RanVar)-1)) 安装pip,我认为我的python安装通常有点愚蠢。

我希望能够在用户不使用sudo的情况下使用pip(在这种情况下为python setup.py --user)。我读过的所有内容都表明上述内容应该可以工作,但它只是拒绝。

如果我使用vagrant,则它可以正确安装,但是同样,由于安装到用户目录,因此不需要sudo。

sudo python setup.py --user

其他信息...

python setup.py --user

Traceback (most recent call last):
  File "setup.py", line 6, in <module>
    from setuptools import find_packages, setup
  File "/home/vagrant/.local/lib/python3.6/site-packages/setuptools/__init__.py", line 16, in <module>
    import setuptools.version
  File "/home/vagrant/.local/lib/python3.6/site-packages/setuptools/version.py", line 1, in <module>
    import pkg_resources
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3126, in <module>
    @_call_aside
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3110, in _call_aside
    f(*args, **kwargs)
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3139, in    _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 572, in _build_master
    ws = cls()
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 565, in __init__
    self.add_entry(entry)
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 621, in add_entry
    for dist in find_distributions(entry, True):
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1968, in find_on_path
    for dist in factory(fullpath):
  File "/home/vagrant/.local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2030, in distributions_from_metadata

    if len(os.listdir(path)) == 0:
PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.6/dist-packages/websocket_client-0.54.0.dist-info'

此外,我知道我可以使用venv实现我想要的功能,但要点是它应该可以工作,并且不可以,这a)使我无休止,b)表示某些事情很简单我的设置有误。

1 个答案:

答案 0 :(得分:0)

在我看来,您似乎正在尝试使用非root用户将内容安装到系统Python中,因此没有权限编辑系统站点包中的内容。请您可以运行whoami并查看以哪个用户身份登录,如果您以root以外的身份登录,则应使用sudo将软件包安装到系统的Python中,例如sudo pip install my_package

如果您不想将软件包安装到系统的Python site-packages目录中,那么您可能应该在virtualenv中进行操作,这将为您的项目提供一个自包含的Python env,并且可以在其家中以任何用户身份创建目录。

要安装virtualenv:

sudo pip install virtualenv

然后以用户身份创建一个新的virtualenv:

virtualenv my_env

假设/激活virtualenv:

source my_env/bin/activate

现在,您可以使用pip作为用户将软件包安装到Python virtualenv中:

pip install my_package

这为您提供了一个完全独立的Python env,以您的用户身份从系统Python安装中运行。希望这对您有帮助,如果我误解了您的用例,请发表评论,并相应地更新答案。