【发布时间】:2016-05-27 14:11:30
【问题描述】:
我在 VM 上安装了 Linux CentOS 6.7。几个月前,我有 - 在其上编译并安装 Python 2.7.8 - 在 /usr/lib/python2.7/site-packages 中安装了 virtualenv-13.1.2 - 在 virtualenv 中安装了 Django 1.7。 - 编译并安装 mod_wsgi 4.4.21 并使用它在 Apache 上部署 Django
过去几个月我一直在使用它,没有任何问题。
我现在正在尝试升级到 Django 1.8.8。我激活了virtualenv,然后执行了下面的命令,但是每次都遇到segmentation fault。
$pip2.7 install --upgrade django==1.8.8
Collecting django==1.8.8
/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/sitepackages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
Downloading Django-1.8.8-py2.py3-none-any.whl (6.2MB)
99% |############################### | 6.2MB 9.1MB/s eta 0:00:01Segmentation fault
如果我在命令前加上 sudo,则没有分段错误,但它根本不会继续安装新版本的 Django。
有什么想法可能会出错吗?
编辑:
下面给出的详细输出的输出 pip2.7 install --upgrade django==1.8.8 -v
Collecting django==1.8.8
Getting page https://pypi.python.org/simple/django/
Starting new HTTPS connection (1): pypi.python.org
/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site- packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
InsecurePlatformWarning
"GET /simple/django/ HTTP/1.1" 200 3985
1 location(s) to search for versions of django:
* https://pypi.python.org/simple/django/
Getting page https://pypi.python.org/simple/django/
"GET /simple/django/ HTTP/1.1" 200 3985
Analyzing links from page https://pypi.python.org/simple/django/
Found link https://pypi.python.org/packages/any/D/Django/Django-1.5.2-py2.py3-none-any.whl#md5=07f0d2d42162945d0ad031fc9737847d (from https://pypi.python.org/simple/django/), version: 1.5.2
Found link https://pypi.python.org/packages/any/D/Django/Django-1.5.8-py2.py3-none-any.whl#md5=1e3418bd1d6f9725a3d1264c9352f2a1 (from https://pypi.python.org/simple/django/), version: 1.5.8
Found link https://pypi.python.org/packages/any/D/Django/Django-1.6.1-py2.py3-none-any.whl#md5=c7b7a4437b36400f1c23953e9700fd29 (from https://pypi.python.org/simple/django/), version: 1.6.1
Found link https://pypi.python.org/packages/any/D/Django/Django-1.6.2-py2.py3-none-any.whl#md5=3bd014923e85df771b34d12c0ab3c9e1 (from https://pypi.python.org/simple/django/), version: 1.6.2
Found link https://pypi.python.org/packages/any/D/Django/Django-1.6.5-py2.py3-none-any.whl#md5=2bcdb4729f9f358b0925b532eef0a8ff (from https://pypi.python.org/simple/django/), version: 1.6.5
..................................
Found link https://pypi.python.org/packages/source/D/Django/Django-1.8.8.tar.gz#md5=08ecf83b7e9d064ed7e3981ddc3a8a15 (from https://pypi.python.org/simple/django/), version: 1.8.8
Found link https://pypi.python.org/packages/source/D/Django/Django-1.8.9.tar.gz#md5=49f6863b1c83825fb2f473c141c28e15 (from https://pypi.python.org/simple/django/), version: 1.8.9
Found link https://pypi.python.org/packages/source/D/Django/Django-1.8.tar.gz#md5=9a811faf67ca0f3e0d43e670a1cc503d (from https://pypi.python.org/simple/django/), version: 1.8
Found link https://pypi.python.org/packages/source/D/Django/Django-1.9.1.tar.gz#md5=02754aa2d5c9c171dfc3f9422b20e12c (from https://pypi.python.org/simple/django/), version: 1.9.1
Found link https://pypi.python.org/packages/source/D/Django/Django-1.9.2.tar.gz#md5=ee90280973d435a1a6aa01b453b50cd1 (from https://pypi.python.org/simple/django/), version: 1.9.2
Found link https://pypi.python.org/packages/source/D/Django/Django-1.9.tar.gz#md5=110389cf89196334182295165852e082 (from https://pypi.python.org/simple/django/), version: 1.9
Found link https://pypi.python.org/packages/source/D/Django/Django-1.9rc1.tar.gz#md5=b971686521ea09b4bf82aec3e794fcbc (from https://pypi.python.org/simple/django/), version: 1.9rc1
Using version 1.8.8 (newest of versions: 1.8.8, 1.8.8)
"GET /packages/py2.py3/D/Django/Django-1.8.8-py2.py3-none-any.whl HTTP/1.1" 200 6170205
Downloading Django-1.8.8-py2.py3-none-any.whl (6.2MB)
Downloading from URL https://pypi.python.org/packages/py2.py3/D/Django/Django-1.8.8-py2.py3-none-any.whl#md5=97334c82efbac0f93f8b6dd4ee4b516f (from https://pypi.python.org/simple/django/)
99% |############################### | 6.2MB 4.8MB/s eta 0:00:01Segmentation fault
如果我尝试升级到版本 1.7.11,我会得到相同的结果(尝试查看 Python 2.7.8 和 Django 1.8.x 之间是否存在任何不兼容)。
如果我尝试安装任何其他软件包,我也会得到相同的结果。所以这不是 Django 特有的问题,可能与 pip 和 virtualenv 有关?
我现在创建了一个名为 syt_env 的新虚拟环境,将其激活并尝试重新安装 Django。现在遇到不同的错误。请注意,它似乎仍在尝试安装在名为 vishwaas_env 的旧虚拟环境中。
Collecting Django==1.8.8 (from -r requirements/base.txt (line 1))
Exception:
Traceback (most recent call last):
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/basecommand.py", line 211, in main
status = self.run(options, args)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/commands/install.py", line 305, in run
wb.build(autobuilding=True)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/wheel.py", line 705, in build
self.requirement_set.prepare_files(self.finder)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/req/req_set.py", line 334, in prepare_files
functools.partial(self._prepare_file, finder))
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/req/req_set.py", line 321, in _walk_req_to_install
more_reqs = handler(req_to_install)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/req/req_set.py", line 461, in _prepare_file
req_to_install.populate_link(finder, self.upgrade)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/req/req_install.py", line 250, in populate_link
self.link = finder.find_requirement(self, upgrade)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/index.py", line 486, in find_requirement
all_versions = self._find_all_versions(req.name)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/index.py", line 404, in _find_all_versions
index_locations = self._get_index_urls_locations(project_name)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/index.py", line 378, in _get_index_urls_locations
page = self._get_page(main_index_url)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/index.py", line 818, in _get_page
return HTMLPage.get_page(link, session=self.session)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/index.py", line 928, in get_page
"Cache-Control": "max-age=600",
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/_vendor/requests/sessions.py", line 477, in get
return self.request('GET', url, **kwargs)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/download.py", line 373, in request
return super(PipSession, self).request(method, url, *args, **kwargs)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/_vendor/requests/sessions.py", line 465, in request
resp = self.send(prep, **send_kwargs)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/_vendor/requests/sessions.py", line 573, in send
r = adapter.send(request, **kwargs)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/adapter.py", line 36, in send
cached_response = self.controller.cached_request(request)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.py", line 102, in cached_request
resp = self.serializer.loads(request, self.cache.get(cache_url))
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py", line 108, in loads
return getattr(self, "_loads_v{0}".format(ver))(request, data)
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py", line 170, in _loads_v2
cached["response"]["body"]
File "/home/syt_admin/.virtualenvs/vishwaas_env/lib/python2.7/site-packages/pip/_vendor/cachecontrol/serialize.py", line 20, in _b64_decode_bytes
return base64.b64decode(b.encode("ascii"))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2662: ordinal not in range(128)
【问题讨论】:
-
猜想,正如你所说,你应该使用 sudo 但你不在你的虚拟环境中,或者你没有激活你的虚拟环境。所以Django1.8是全局安装的,这不会影响你的virtualenv
-
那么我如何使用 sudo 并且仍然在虚拟环境中安装它?
-
我猜首先你必须激活 virtualenv (.venv/bin/activate) 和不带 sudo 的 pip 命令,也可以尝试 pip freeze 命令检查你在 virtualenv 中的包。
-
我确实激活了 virtualenv 并在虚拟环境中执行了 pip2.7 命令。 Django 1.8.8 包已下载,但在下载完成后立即遇到分段错误。如果我留在 virtualenv 中并执行“sudo pip2.7 install ....”它会下载包然后什么都不做。
-
@Tanuka 抱歉,您是对的,当您安装到虚拟环境中时,您不需要 sudo。你试过不同的 Django 版本吗?