I've successful installed pip on ironpython. But when i try to install requests with "ipy.exe -X:Frames -m pip install requests" in a administrator console I get the following:
------------------------------------------------------------
C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\__main__.py run on 02/02/16 16:13:53
Downloading/unpacking html5lib
Getting page https://pypi.python.org/simple/html5lib/
Cleaning up...
Removing temporary dir c:\users\panta\appdata\local\temp\pip_build_panta...
Exception:
Traceback (most recent call last):
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\basecommand.py", line 122, in main
status = self.run(options, args)
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\commands\install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\req.py", line 1183, in prepare_files
url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\index.py", line 194, in find_requirement
page = self._get_page(main_index_url, req)
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\index.py", line 566, in _get_page
return HTMLPage.get_page(link, req,
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\index.py", line 670, in get_page
resp = session.get(url, headers={"Accept": "text/html"})
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\_vendor\requests\sessions.py", line 468, in get
return self.request('GET', url, **kwargs)
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\download.py", line 237, in request
return super(PipSession, self).request(method, url, *args, **kwargs)
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\_vendor\requests\sessions.py", line 456, in request
resp = self.send(prep, **send_kwargs)
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\_vendor\requests\sessions.py", line 559, in send
r = adapter.send(request, **kwargs)
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\_vendor\requests\adapters.py", line 317, in send
resp = conn.urlopen(
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\_vendor\requests\packages\urllib3\connectionpool.py", line 491, in urlopen
httplib_response = self._make_request(conn, method, url,
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\_vendor\requests\packages\urllib3\connectionpool.py", line 291, in _make_request
conn.request(method, url, **httplib_request_kw)
File "C:\Program Files (x86)\IronPython 2.7\Lib\httplib.py", line 955, in request
self._send_request(method, url, body, headers)
File "C:\Program Files (x86)\IronPython 2.7\Lib\httplib.py", line 989, in _send_request
self.endheaders(body)
File "C:\Program Files (x86)\IronPython 2.7\Lib\httplib.py", line 951, in endheaders
self._send_output(message_body)
File "C:\Program Files (x86)\IronPython 2.7\Lib\httplib.py", line 811, in _send_output
self.send(msg)
File "C:\Program Files (x86)\IronPython 2.7\Lib\httplib.py", line 773, in send
self.connect()
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\_vendor\requests\packages\urllib3\connection.py", line 197, in connect
match_hostname(self.sock.getpeercert(),
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pip\_vendor\requests\packages\urllib3\packages\ssl_match_hostname\_implementation.py", line 88, in match_hostname
for key, value in sub:
ValueError: too many values to unpack
So, there is some way to install requests on ironpython now that supports pip? I tried using (in administrator console):
- ipy.exe -X:Frames -m pip install requests
- ipy.exe -X:FullFrames -m pip install requests
- ipy.exe -m pip install requests
- ipy.exe -X:Frames Scripts\pip2.7.exe install requests
- ipy.exe -X:FullFrames Scripts\pip2.7.exe install requests
- ipy.exe -X:FullFrames Scripts\pip2.exe install requests
- ipy.exe -X:FullFrames Scripts\easy_install-2.7.exe requests
An when i try "ipy.exe -X:FullFrames -m easy_install requests" i get:
C:\Program Files (x86)\IronPython 2.7\Lib\weakref.py:1: DeprecationWarning: object.__init__() takes no parameters for type KeyedRef
"""Weak reference support for Python.
Searching for requests
Reading https://pypi.python.org/simple/requests/
Best match: requests 2.9.1
Downloading https://pypi.python.org/packages/source/r/requests/requests-2.9.1.tar.gz#md5=0b7f480d19012ec52bab78292efd976d
Processing requests-2.9.1.tar.gz
Writing c:\users\panta\appdata\local\temp\easy_install-mbdcgv\requests-2.9.1\setup.cfg
Running requests-2.9.1\setup.py -q bdist_egg --dist-dir c:\users\panta\appdata\local\temp\easy_install-mbdcgv\requests-2.9.1\egg-dist-tmp-rzrv6w
warning: build_py: byte-compiling is disabled, skipping.
warning: install_lib: byte-compiling is disabled, skipping.
warning: easy_install: byte-compiling is disabled, skipping.
An it creates the folder C:\Users\panta\AppData\Local\Temp\easy_install-mbdcgv\requests-2.9.1 with a setup.py but when I try to run, it gives an error "No commands supplied". So, there is a way to import requests on ironpython 2.7.5?
EDIT:Now with easy_install it "worked" but when i try to "import requests" i receive the following:
>>> import requests
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\requests-2.9.1-py2.7.egg\requests\__init__.py", line 53, in <module>
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\requests-2.9.1-py2.7.egg\requests\packages\__init__.py", line 27, in <module>
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\requests-2.9.1-py2.7.egg\requests\packages\urllib3\__init__.py", line 8, in <module>
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\requests-2.9.1-py2.7.egg\requests\packages\urllib3\connectionpool.py", line 34, in <module>
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\requests-2.9.1-py2.7.egg\requests\packages\urllib3\packages\six.py", line 330, in <module>
File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\requests-2.9.1-py2.7.egg\requests\packages\urllib3\packages\six.py", line 320, in exec_
AttributeError: 'module' object has no attribute '_getframe'
So, no requests module for ironpython?
Unfortunately, the six library used by urllib3 (in turn used by requests) is not compatible with IronPython. See issue 135 in the six project tracker, which may have a work-around.
Apparently, that's the only thing standing in the way of IronPython-compatibility, see issue #2324 in the requests issue tracker.
You probably could make it work by replacing the definition for exec_() with calls directly to exec(), in the six module. urllib3 doesn't actually use any calls to six.exec_() anyway, and exec() works just fine in Python 2 code.
I believe it works at least for trivial cases.
My exact install command is:
ipy.exe -X:Frames -m pip install --user requests
And the example session right after:
c:\cygwin64\home\rejap>ipy -X:Frames
IronPython 2.7.5 (2.7.5.0) on .NET 4.0.30319.42000 (32-bit)
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> r=requests.get('http://google.com')
C:\Users\rejap\AppData\Roaming\Python\IronPython27\site-packages\requests\packages\urllib3\connectionpool.py:1: DeprecationWarning: object.__new__() takes no parameters
from __future__ import absolute_import
>>> r
<Response [200]>
>>>
来源:https://stackoverflow.com/questions/35162177/its-possible-to-use-requests-in-ironpython-2-7-5