xuruidong commented on PR #8623:
URL: https://github.com/apache/apisix/pull/8623#issuecomment-1376828609
> Could you provide a standalone test to show us why changing a filename can
fix "AttributeError: module 'requests' has no attribute 'put'"?
test:
use ssl.py
```
# python ssl.py lvh.me+1.pem lvh.me+1-key.pem lvh.me
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
'__name__', '__package__', '__path__', '__spec__', 'warnings']
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
'__name__', '__package__', '__path__', '__spec__', 'warnings']
Traceback (most recent call last):
File "/usr/src/myapp/ssl.py", line 6, in <module>
import requests
File
"/usr/src/myapp/myvenv/lib/python3.9/site-packages/requests/__init__.py", line
43, in <module>
import urllib3
File
"/usr/src/myapp/myvenv/lib/python3.9/site-packages/urllib3/__init__.py", line
11, in <module>
from . import exceptions
File
"/usr/src/myapp/myvenv/lib/python3.9/site-packages/urllib3/exceptions.py", line
3, in <module>
from .packages.six.moves.http_client import IncompleteRead as
httplib_IncompleteRead
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
File "<frozen importlib._bootstrap>", line 565, in module_from_spec
File
"/usr/src/myapp/myvenv/lib/python3.9/site-packages/urllib3/packages/six.py",
line 234, in create_module
return self.load_module(spec.name)
File
"/usr/src/myapp/myvenv/lib/python3.9/site-packages/urllib3/packages/six.py",
line 209, in load_module
mod = mod._resolve()
File
"/usr/src/myapp/myvenv/lib/python3.9/site-packages/urllib3/packages/six.py",
line 118, in _resolve
return _import_module(self.mod)
File
"/usr/src/myapp/myvenv/lib/python3.9/site-packages/urllib3/packages/six.py",
line 87, in _import_module
__import__(name)
File "/usr/local/lib/python3.9/http/client.py", line 1397, in <module>
import ssl
File "/usr/src/myapp/ssl.py", line 18, in <module>
resp = requests.put("http://127.0.0.1:9180/apisix/admin/ssls/1", json={
AttributeError: partially initialized module 'requests' has no attribute
'put' (most likely due to a circular import)
```
use create-ssl.py
```
# mv ssl.py create-ssl.py
(myvenv) root@ap04:/usr/src/myapp# python create-ssl.py lvh.me+1.pem
lvh.me+1-key.pem lvh.me
['ConnectTimeout', 'ConnectionError', 'DependencyWarning',
'FileModeWarning', 'HTTPError', 'JSONDecodeError', 'NullHandler',
'PreparedRequest', 'ReadTimeout', 'Request', 'RequestException',
'RequestsDependencyWarning', 'Response', 'Session', 'Timeout',
'TooManyRedirects', 'URLRequired', '__author__', '__author_email__',
'__build__', '__builtins__', '__cached__', '__cake__', '__copyright__',
'__description__', '__doc__', '__file__', '__license__', '__loader__',
'__name__', '__package__', '__path__', '__spec__', '__title__', '__url__',
'__version__', '_check_cryptography', '_internal_utils', 'adapters', 'api',
'auth', 'certs', 'chardet_version', 'charset_normalizer_version',
'check_compatibility', 'codes', 'compat', 'cookies', 'delete', 'exceptions',
'get', 'head', 'hooks', 'logging', 'models', 'options', 'packages', 'patch',
'post', 'put', 'request', 'session', 'sessions', 'ssl', 'status_codes',
'structures', 'urllib3', 'utils', 'warnings']
200
{"key":"\/apisix\/ssls\/1","value":{"type":"server","create_time":1672889225,"cert":"-----BEGIN
CERTIFICATE-----\nMIIEKjCCApKgAwIBAgIQJ7+tTZRECIp1\/rZvizFsADANBgkqhkiG9w0BAQsFADBl\nMR4wHAYDVQQKExVta2NlcnQgZGV2ZWxvcG1lbnQgQ0ExHTAbBgNVBAsMFHJvb3RA\n\/8xj78nya58YZ6oaf+EDVqA+JPhbAZEFC+U9+BYLmr5eB31DNc\nNfeqlIybQ1xrj42QRUTGPIwfl6lwGu4L63WKVfSOOEWkx1yB\/x5vUYmWK4Vub+Gs\nrwqoluFp44oNMY+uy9w=\n-----END
CERTIFICATE-----\n","id":"1","status":1,"key":"YnwfPfngS\/3wJFDtm8aCDkPmoYaHW5Qh60oD0cE2k8fEjtgy1JuHR+W2p5KI2dm5knsWwGRTTNwLPpglGsDSg2OcbVzkUNQEFMpZqGNMTDCMBhlpTZg=","snis":["lvh.me"],"update_time":1673334815}}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]