这是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
>>>
谢谢。
答案 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
之前将本地用户站点包文件夹添加到路径并不起作用,但是这是除了这个答案的重点。