msg204149 - (view) |
Author: Tim Peters (tim.peters) * |
Date: 2013-11-24 01:38 |
With the current default branch, test_venv fails every time for me:
[1/1] test_venv
Traceback (most recent call last):
File "C:\Code\Python\lib\runpy.py", line 160, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "C:\Code\Python\lib\runpy.py", line 73, in _run_code
exec(code, run_globals)
File "C:\Code\Python\lib\ensurepip\__main__.py", line 66, in <module>
main()
File "C:\Code\Python\lib\ensurepip\__main__.py", line 61, in main
default_pip=args.default_pip,
File "C:\Code\Python\lib\ensurepip\__init__.py", line 92, in bootstrap
_run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
File "C:\Code\Python\lib\ensurepip\__init__.py", line 28, in _run_pip
import pip
File "C:\Users\Tim\AppData\Local\Temp\tmpjltqdgi8\pip-1.5.rc1-py2.py3-none-any.whl\pip\__init__.py", line 10
, in <module>
File "C:\Users\Tim\AppData\Local\Temp\tmpjltqdgi8\pip-1.5.rc1-py2.py3-none-any.whl\pip\util.py", line 17, in
<module>
File "C:\Users\Tim\AppData\Local\Temp\tmpjltqdgi8\pip-1.5.rc1-py2.py3-none-any.whl\pip\_vendor\distlib\versi
on.py", line 14, in <module>
File "C:\Users\Tim\AppData\Local\Temp\tmpjltqdgi8\pip-1.5.rc1-py2.py3-none-any.whl\pip\_vendor\distlib\compat.py", line 66, in <module>
ImportError: cannot import name 'HTTPSHandler'
test test_venv failed -- Traceback (most recent call last):
File "C:\Code\Python\lib\test\test_venv.py", line 288, in test_with_pip
self.run_with_capture(venv.create, self.env_dir, with_pip=True)
File "C:\Code\Python\lib\test\test_venv.py", line 48, in run_with_capture
func(*args, **kwargs)
File "C:\Code\Python\lib\venv\__init__.py", line 359, in create
builder.create(env_dir)
File "C:\Code\Python\lib\venv\__init__.py", line 86, in create
self._setup_pip(context)
File "C:\Code\Python\lib\venv\__init__.py", line 242, in _setup_pip
subprocess.check_output(cmd)
File "C:\Code\Python\lib\subprocess.py", line 618, in check_output
raise CalledProcessError(retcode, process.args, output=output)
subprocess.CalledProcessError: Command '['C:\\Users\\Tim\\AppData\\Local\\Temp\\tmpt0ca1aqn\\Scripts\\python_d
.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1
1 test failed:
test_venv
All virtual Greek to me.
|
msg204152 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2013-11-24 01:51 |
Interesting - this isn't *quite* a duplicate of the buildbot failures in issue 19734 (at least, I don't think it is - the extra diagnostics I just checked in should tell us for sure).
Since pip isn't useful without HTTPS, we may want to add a check for ssl support to either venv or ensurepip itself.
|
msg204158 - (view) |
Author: Tim Peters (tim.peters) * |
Date: 2013-11-24 01:59 |
Ah, I didn't even notice the "S" in "HTTPS"! I'm not building the SSL cruft on my box, so it's not surprising that anything requiring it would fail. It is surprising that this is the only test that _does_ fail without it ;-)
|
msg204164 - (view) |
Author: Tim Peters (tim.peters) * |
Date: 2013-11-24 02:27 |
FYI, here's the new output:
[1/1] test_venv
test test_venv failed -- Traceback (most recent call last):
File "C:\Code\Python\lib\test\test_venv.py", line 289, in test_with_pip
self.run_with_capture(venv.create, self.env_dir, with_pip=True)
subprocess.CalledProcessError: Command '['C:\\Users\\Tim\\AppData\\Local\\Temp\\tmptw2_vda6\\Scripts\\python_d
.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Code\Python\lib\test\test_venv.py", line 295, in test_with_pip
self.fail(msg)
AssertionError: Command '['C:\\Users\\Tim\\AppData\\Local\\Temp\\tmptw2_vda6\\Scripts\\python_d.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1
**Subprocess Output**
Traceback (most recent call last):
File "C:\Code\Python\lib\runpy.py", line 160, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "C:\Code\Python\lib\runpy.py", line 73, in _run_code
exec(code, run_globals)
File "C:\Code\Python\lib\ensurepip\__main__.py", line 66, in <module>
main()
File "C:\Code\Python\lib\ensurepip\__main__.py", line 61, in main
default_pip=args.default_pip,
File "C:\Code\Python\lib\ensurepip\__init__.py", line 92, in bootstrap
_run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
File "C:\Code\Python\lib\ensurepip\__init__.py", line 28, in _run_pip
import pip
File "C:\Users\Tim\AppData\Local\Temp\tmpdkfwi7it\pip-1.5.rc1-py2.py3-none-any.whl\pip\__init__.py", line 10
, in <module>
File "C:\Users\Tim\AppData\Local\Temp\tmpdkfwi7it\pip-1.5.rc1-py2.py3-none-any.whl\pip\util.py", line 17, in
<module>
File "C:\Users\Tim\AppData\Local\Temp\tmpdkfwi7it\pip-1.5.rc1-py2.py3-none-any.whl\pip\_vendor\distlib\version.py", line 14, in <module>
File "C:\Users\Tim\AppData\Local\Temp\tmpdkfwi7it\pip-1.5.rc1-py2.py3-none-any.whl\pip\_vendor\distlib\compat.py", line 66, in <module>
ImportError: cannot import name 'HTTPSHandler'
1 test failed:
test_venv
|
msg204167 - (view) |
Author: Roundup Robot (python-dev) |
Date: 2013-11-24 02:45 |
New changeset 9891ba920f3c by Nick Coghlan in branch 'default':
Issue #19744 (temp workaround): without ssl, skip pip test
http://hg.python.org/cpython/rev/9891ba920f3c
|
msg204168 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2013-11-24 02:49 |
Temporarily skipped the test to appease the build bots for the beta release, but this should be changed so that ensurepip refuses to bootstrap pip if SSL/TLS support is not available.
test_venv would then be updated to check for the appropriate behaviour (e.g. by inserting a dummy ssl.py that just raises import error into the venv)
|
msg204184 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2013-11-24 06:54 |
Also noting that the reason for the dummy ssl in the venv would be to provoke the "SSL/TLS not available" behaviour when running the tests in a Python that actually has those pieces (since the buildbots will have them available unless something goes wrong with the build)
|
msg204295 - (view) |
Author: Donald Stufft (dstufft) * |
Date: 2013-11-25 05:27 |
There's a ticket in pip to make pip work even when ssl isn't available. You wouldn't be able to install from PyPI but you would be able to install from local archives.
|
msg204312 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2013-11-25 08:38 |
Is that likely to be in 1.5 or 1.5.1? Not needing to special case this in
ensurepip would be nice :)
|
msg204328 - (view) |
Author: (Dubslow) |
Date: 2013-11-25 11:50 |
I've stumbled upon what appears to be a related issue, but I'm not sure it deserves its own bug report.
I compiled 3.4 on my LMDE (so essentially Debian testing) system, and aside from not building tkinter, various compression modules, etc., all went well. I ran `make test` with no errors, including the success of test_venv. (There were many and various warnings about deprecated code and calling str() on bytes instances, but I'm pretty sure none of it is related).
I ran `sudo make altinstall` (to not nuke my current 3.3 from the repos), and to my surprise, it failed with the following error:
running install_scripts
copying build/scripts-3.4/pydoc3.4 -> /usr/local/bin
copying build/scripts-3.4/2to3-3.4 -> /usr/local/bin
copying build/scripts-3.4/idle3.4 -> /usr/local/bin
copying build/scripts-3.4/pyvenv-3.4 -> /usr/local/bin
changing mode of /usr/local/bin/pydoc3.4 to 755
changing mode of /usr/local/bin/2to3-3.4 to 755
changing mode of /usr/local/bin/idle3.4 to 755
changing mode of /usr/local/bin/pyvenv-3.4 to 755
rm /usr/local/lib/python3.4/lib-dynload/_sysconfigdata.py
rm -r /usr/local/lib/python3.4/lib-dynload/__pycache__
/usr/bin/install -c -m 644 ./Misc/python.man \
/usr/local/share/man/man1/python3.4.1
if test "xupgrade" != "xno" ; then \
case upgrade in \
upgrade) ensurepip="--altinstall --upgrade" ;; \
install|*) ensurepip="--altinstall" ;; \
esac; \
./python -E -m ensurepip \
$ensurepip --root=/ ; \
fi
Traceback (most recent call last):
File "/home/bill/py3.4/Python-3.4.0b1/Lib/runpy.py", line 160, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/home/bill/py3.4/Python-3.4.0b1/Lib/runpy.py", line 73, in _run_code
exec(code, run_globals)
File "/home/bill/py3.4/Python-3.4.0b1/Lib/ensurepip/__main__.py", line 66, in <module>
main()
File "/home/bill/py3.4/Python-3.4.0b1/Lib/ensurepip/__main__.py", line 61, in main
default_pip=args.default_pip,
File "/home/bill/py3.4/Python-3.4.0b1/Lib/ensurepip/__init__.py", line 92, in bootstrap
_run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
File "/home/bill/py3.4/Python-3.4.0b1/Lib/ensurepip/__init__.py", line 28, in _run_pip
import pip
File "/tmp/tmprwpsemxj/pip-1.5.rc1-py2.py3-none-any.whl/pip/__init__.py", line 10, in <module>
File "/tmp/tmprwpsemxj/pip-1.5.rc1-py2.py3-none-any.whl/pip/util.py", line 17, in <module>
File "/tmp/tmprwpsemxj/pip-1.5.rc1-py2.py3-none-any.whl/pip/_vendor/distlib/version.py", line 14, in <module>
File "/tmp/tmprwpsemxj/pip-1.5.rc1-py2.py3-none-any.whl/pip/_vendor/distlib/compat.py", line 66, in <module>
ImportError: cannot import name 'HTTPSHandler'
make: *** [altinstall] Error 1
Note: I will certainly *not* be trying to `sudo make install`.
In any case, the executable and modules were installed fine, so other than reporting it here, it's not causing me problems (so far).
|
msg204330 - (view) |
Author: Donald Stufft (dstufft) * |
Date: 2013-11-25 12:08 |
It probably can. I just need to figure out how to test it to make sure the PR that supposedly fixes it fixes it, and then figure out how to ensure it still works into the future.
|
msg204338 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2013-11-25 12:58 |
That I can help with. Steal the "import_fresh_module helper function from test.support (or the gist of it anyway - you can likely leave out the stuff about deprecated imports):
http://hg.python.org/cpython/file/default/Lib/test/support/__init__.py#l192
Then do:
pip_nossl = import_fresh_module("pip", blocked=["ssl"])
|
msg204341 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2013-11-25 13:02 |
If the ssl import is actually in a submodule, you may need to list additional subpackages in the "fresh" parameter.
If you're wondering why this isn't in the importlib API - it's because it can go wrong in an impressively large number of ways, and we don't have any hope of documenting it well enough to make it usable by anyone that either: a) couldn't write it themselves; or b) isn't getting coached by someone that could write it themselves.
But when you know what you're doing and the modules involved don't break horribly when treated this way, it's a very neat trick for testing purposes.
|
msg205108 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2013-12-03 12:20 |
Relevant pip issue: https://github.com/pypa/pip/issues/1165
|
msg205817 - (view) |
Author: Donald Stufft (dstufft) * |
Date: 2013-12-10 14:41 |
Can this be solved in ensurepip for now? I've been banging away at this but it's going to require some refactoring in pip to make it reasonably work. The move to distlib and requests made this harder to do than the old PR against pip could handle.
|
msg206754 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2013-12-21 15:31 |
OK, since pip 1.5 will still have the SSL/TLS dependency, the approach I'll go with for 3.4 is to:
1. Have ensurepip refuse to bootstrap pip if the ssl module is not available (noting that we'll remove that restriction if pip 1.6 avoids the strict dependency)
2. Use import_fresh_module to check that behaviour
3. Ensure venv skips trying to bootstrap pip if the ssl module is not available (although the subprocess invocation in the venv tests could make that tricky to test when the ssl module actually *is* available)
|
msg206856 - (view) |
Author: Roundup Robot (python-dev) |
Date: 2013-12-23 13:07 |
New changeset f670d8db8ef3 by Nick Coghlan in branch 'default':
Issue #19744: improve ensurepip error when ssl is missing
http://hg.python.org/cpython/rev/f670d8db8ef3
|
msg206857 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2013-12-23 13:14 |
I ended up not implementing step 3 - if you don't have SSL/TLS built, and you pass with_pip to the venv module API, or use the default settings for pyvenv, you *will* get an error from ensurepip.
Instead, I just kept the test skip in test_venv. ensurepip and test_ensurepip have been updated to provide a better traceback when SSL/TLS support is missing, though.
Tim, could you poke around at the latest version in your local build and see if the new checks are triggering? (I've assumed the ssl module can't be imported if the necessary underlying bits aren't built)
|
msg207164 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2014-01-02 13:34 |
This should be fixed, so I don't think it's a release blocker any more, but I also don't want to close it until Tim confirms it also works for him.
|
msg211024 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2014-02-11 21:19 |
This upsets "make install" as well - currently with a traceback.
|
msg211211 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2014-02-14 10:58 |
Attached patch tweaks the ensurepip CLI to check immediately for ssl support, and avoid printing a traceback if it is missing.
However, missing SSL support still fails the call, which fails installation.
|
msg211212 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2014-02-14 11:11 |
This patch is probably a better bet - it just prints a message to stderr to say that we're ignoring the ensurepip failure during installation.
pip wouldn't work anyway in a Python without ssl built, but at least this way that Python can still be installed without the ensurepip invocation complaining.
Ned, if this approach sounds reasonable to you, I'll commit this one.
|
msg211213 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2014-02-14 11:13 |
Note: I'm deliberately not worrying about ensurepip._uninstall here, since that only gets invoked implicitly in the Windows uninstaller, and that should always have a valid SSL to play with.
Always, since I worked out how to disable ssl in my local build (just a small tweak to setup.py), I was able to verify the correct behaviour of test_ensurepip and test_venv with SSL unavailable.
|
msg211222 - (view) |
Author: Ned Deily (ned.deily) * |
Date: 2014-02-14 17:03 |
issue19744_ensurepip_install_ok_without_ssl.diff looks good to me. Note, though, that with it and with ssl support missing, test_ensurepip fails somewhat obscurely:
======================================================================
FAIL: test_bootstrap_version (test.test_ensurepip.TestBootstrappingMainFunction)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/py/dev/3x/root/uxd/lib/python3.4/test/test_ensurepip.py", line 293, in test_bootstrap_version
ensurepip._main(["--version"])
AssertionError: SystemExit not raised
----------------------------------------------------------------------
|
msg211249 - (view) |
Author: Roundup Robot (python-dev) |
Date: 2014-02-14 23:17 |
New changeset 9f76adbac8b7 by Nick Coghlan in branch 'default':
Issue #19744: Handle missing SSL/TLS in ensurepip
http://hg.python.org/cpython/rev/9f76adbac8b7
|
msg211250 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2014-02-14 23:22 |
Thanks Ned - I fixed that test to only run if SSL/TLS is available, and added a new one to test that the command "succeeds" (with a warning printed to stderr) if SSL/TLS is missing.
Larry - over to you to decide whether or not to cherry pick this into the release clone. The remaining misbehaviour that was fixed in the last patch only affects custom source builds, so the beneficiaries would be people trying to build from the source tarball or release tag without SSL/TLS support.
|
msg211620 - (view) |
Author: Nick Coghlan (ncoghlan) * |
Date: 2014-02-19 13:42 |
Issue 20685 created to cover inclusion in 3.4.0, already committed to default, so closing this one.
|
msg213816 - (view) |
Author: Roundup Robot (python-dev) |
Date: 2014-03-17 06:30 |
New changeset cd39d4cab680 by Nick Coghlan in branch '3.4':
Issue #19744: Handle missing SSL/TLS in ensurepip
http://hg.python.org/cpython/rev/cd39d4cab680
|
|
Date |
User |
Action |
Args |
2022-04-11 14:57:54 | admin | set | github: 63943 |
2014-03-17 06:30:58 | python-dev | set | messages:
+ msg213816 |
2014-02-19 13:42:39 | ncoghlan | set | status: open -> closed resolution: fixed messages:
+ msg211620
stage: commit review -> resolved |
2014-02-14 23:22:23 | ncoghlan | set | assignee: ned.deily -> larry messages:
+ msg211250 |
2014-02-14 23:17:53 | python-dev | set | messages:
+ msg211249 |
2014-02-14 17:03:19 | ned.deily | set | messages:
+ msg211222 |
2014-02-14 11:13:15 | ncoghlan | set | messages:
+ msg211213 |
2014-02-14 11:11:19 | ncoghlan | set | files:
+ issue19744_ensurepip_install_ok_without_ssl.diff
nosy:
+ ned.deily messages:
+ msg211212
assignee: ncoghlan -> ned.deily |
2014-02-14 10:58:49 | ncoghlan | set | files:
+ issue19744_ensurepip_no_ssl.diff messages:
+ msg211211
keywords:
+ patch resolution: fixed -> (no value) stage: resolved -> commit review |
2014-02-11 21:25:09 | ncoghlan | set | title: test_venv fails if SSL/TLS is not available -> test_venv and installation fail if SSL/TLS is not available |
2014-02-11 21:24:31 | ncoghlan | set | assignee: tim.peters -> ncoghlan |
2014-02-11 21:19:43 | ncoghlan | set | priority: deferred blocker -> release blocker status: pending -> open messages:
+ msg211024
|
2014-02-04 12:34:08 | ncoghlan | set | status: open -> pending |
2014-01-02 13:34:00 | ncoghlan | set | priority: release blocker -> deferred blocker status: pending -> open messages:
+ msg207164
|
2013-12-23 13:14:02 | ncoghlan | set | status: open -> pending type: behavior messages:
+ msg206857
assignee: ncoghlan -> tim.peters resolution: fixed stage: resolved |
2013-12-23 13:07:20 | python-dev | set | messages:
+ msg206856 |
2013-12-21 15:31:01 | ncoghlan | set | assignee: ncoghlan messages:
+ msg206754 |
2013-12-10 14:41:42 | dstufft | set | messages:
+ msg205817 |
2013-12-03 14:19:07 | piotr.dobrogost | set | nosy:
+ piotr.dobrogost
|
2013-12-03 12:30:00 | ncoghlan | set | title: ensurepip should refuse to install pip if SSL/TLS is not available -> test_venv fails if SSL/TLS is not available |
2013-12-03 12:20:02 | ncoghlan | set | priority: high -> release blocker nosy:
+ larry messages:
+ msg205108
|
2013-11-25 13:02:53 | ncoghlan | set | messages:
+ msg204341 |
2013-11-25 12:58:05 | ncoghlan | set | messages:
+ msg204338 |
2013-11-25 12:08:13 | dstufft | set | messages:
+ msg204330 |
2013-11-25 11:50:37 | Dubslow | set | nosy:
+ Dubslow messages:
+ msg204328
|
2013-11-25 08:38:14 | ncoghlan | set | messages:
+ msg204312 |
2013-11-25 05:27:56 | dstufft | set | nosy:
+ dstufft messages:
+ msg204295
|
2013-11-24 06:54:23 | ncoghlan | set | messages:
+ msg204184 |
2013-11-24 02:51:29 | christian.heimes | set | nosy:
+ christian.heimes
|
2013-11-24 02:49:32 | ncoghlan | set | priority: normal -> high
messages:
+ msg204168 title: test_venv failing on 32-bit Windows Vista -> ensurepip should refuse to install pip if SSL/TLS is not available |
2013-11-24 02:45:38 | python-dev | set | nosy:
+ python-dev messages:
+ msg204167
|
2013-11-24 02:27:41 | tim.peters | set | messages:
+ msg204164 |
2013-11-24 01:59:32 | tim.peters | set | messages:
+ msg204158 |
2013-11-24 01:51:40 | ncoghlan | set | nosy:
+ ncoghlan messages:
+ msg204152
|
2013-11-24 01:38:45 | tim.peters | create | |