由于某种原因,pip没有正确安装pyowm

时间:2016-12-14 23:08:46

标签: python pip

我正在尝试通过pip安装此软件包pyowm。但由于某种原因它不起作用。它是一个ubuntu 16 VM。我用pip来安装其他软件包,之前一切正常,所以我不确定为什么这个软件有问题。

ubuntu@ip-172-31-22-187:~/.cache/pip$ pip install pyowm
Collecting pyowm
Installing collected packages: pyowm
Exception:
Traceback (most recent call last):
  File "/home/ubuntu/.local/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/home/ubuntu/.local/lib/python2.7/site-packages/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/home/ubuntu/.local/lib/python2.7/site-packages/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "/home/ubuntu/.local/lib/python2.7/site-packages/pip/wheel.py", line 345, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/pip/wheel.py", line 316, in clobber
    ensure_dir(destdir)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/pip/utils/__init__.py", line 83, in ensure_dir
    os.makedirs(path)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/pyowm-2.5.0.dist-info'

你可以看到它认为我没有得到正确的许可。所以我这样做了:

ubuntu@ip-172-31-22-187:/usr/local/lib/python2.7/dist-packages$ sudo -H pip install pyowm
Collecting pyowm
Installing collected packages: pyowm
Successfully installed pyowm-2.5.0
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

但是当我试着打电话时,会发生这种情况:

ubuntu@ip-172-31-22-187:~/.cache/pip$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyowm
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'pyowm'
>>>

所以现在我很困惑。 pip说它完成了这项工作,但是pyowm并没有显示出来?对于python 2.7或3.5,结果是相同的。

我可以看到pyowm的东西在那里:

ubuntu@ip-172-31-22-187:/usr/local/lib/python2.7/dist-packages/pyowm$ pwd
/usr/local/lib/python2.7/dist-packages/pyowm
ubuntu@ip-172-31-22-187:/usr/local/lib/python2.7/dist-packages/pyowm$ ls
abstractions  caches  commons  constants.py  constants.pyc  exceptions  __init__.py  __init__.pyc  utils  webapi25

我也尝试升级pip,但这就是我得到的:

ubuntu@ip-172-31-22-187:/usr/local/lib$ pip install --upgrade pip
Requirement already up-to-date: pip in /home/ubuntu/.local/lib/python2.7/site-packages

ubuntu@ip-172-31-22-187:/usr/local/lib/python2.7/dist-packages/pyowm$ pip -V
pip 9.0.1 from /home/ubuntu/.local/lib/python2.7/site-packages (python 2.7)

所以我非常困惑。我的版本是9.0.1,但为什么之前的cmd输出显示我在版本8上?为什么我突然需要sudo来安装pyowm昨天我安装了reportLab而不需要sudo?为什么在用sudo安装后我无法调用pyowm?

2 个答案:

答案 0 :(得分:0)

一个非常有效的问题!

我假设您正在尝试为Python 3安装pyowm。如果是这样,您需要使用pip3。 Ubuntu附带Python 2.7和3.5。

对于Python 2. *:使用pip install pyowm

对于Python 3. *:使用pip3 install pyowm

pip3默认情况下没有附带linux,请使用sudo apt-get install pip3来获取它。

许可问题很可能是因为您可能不是root用户,不用担心!您可以使用命令sudo为您提供以下命令的root权限。

所以要安装pyowm,你可以使用:sudo pip3 install pyowm。请特别注意sudo

作为一些背景知识,我尝试了你使用的命令并得到了几乎完全相同的错误。当我跑这个它工作得很好:))

希望这有帮助!

答案 1 :(得分:0)

嗨,我知道已经2年了,但是希望这个答案可以对某人有所帮助。

您使用sudo安装了pyowm,然后尝试使用当前用户的python3安装而不是root用户的python3访问它。

如果您这样做:

sudo pip3 install pyowm

然后要访问已安装的库,您需要打开正确的python3解释器:

sudo python3 # this interpreter belongs to root user, and has pyowm installed.

但不:

python3 # this interpreter belongs to a normal user, it doesn't have pyowm installed.

最后,如果您对任何目录都存在权限问题,那么如果您具有root用户访问权限,则可以随时授予自己权限。

只需:

sudo chmod 777 <path_to_directory_where_you_want_permissions>

现在777是不好的做法,但是当您在自己的计算机上四处乱逛时也可以。如果您在已部署的服务器或工作机上,则需要找到正确的组合,可能是665或666。

在您的情况下,命令为:

sudo chmod 777 /usr/local/lib/python2.7/dist-packages/

还要注意,当您调用pip而不是pip3时,它将调用python2.7而不是python3!因此,如果要使用python3,请使用pip3。这是特定于linux的。大多数linux发行版都遵循此约定安装python。在Windows上,我通常只会看到“ python”映射到最新安装的python:)