pip.main(["安装"," - 用户",...]不工作

时间:2016-11-21 00:31:53

标签: python pip

这是Python 2.7.9,安装在Debian Docker容器中。它没有使用virtualenv。这里有一些我可以做的根本不同的事情。但无论如何,我有以下非常直截了当的问题:

为什么这不起作用?

>>> import pip
>>> pip.main(["install", "--user", "httmock"])
...installs httmock...
>>> import httmock
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named httmock
>>>

为了比较,这很好用:

>>> import pip
>>> pip.main(["install", "httmock"])
...installs httmock...
>>> import httmock
>>>

谢谢。

1 个答案:

答案 0 :(得分:2)

来自 user3159253 的有用评论在我自己发现这个问题的同时出现在我的问题中。由于其他用户没有输入答案,我会这样做。

显然,在您下次运行应用程序之前,本地用户站点包不会自动添加到import的搜索选项中。要强制它,请在运行pip install --user ...之后将本地用户站点包添加到路径

pip.main(["install", "--user", "httmock"])

home_folder = os.path.expanduser("~")
user_site_packages_folder = "{}/.local/lib/python2.7/site-packages".format(home_folder)
if user_site_packages_folder not in sys.path:
    sys.path.append(user_site_packages_folder)

我想这只有在为本地用户安装了软件包的情况下才有必要。我还想象实际调用sys.path.append会触发特殊行为,因为在运行pip之前将本地用户站点包文件夹添加到路径并不起作用,但是这是除了这个答案的重点。