Я наблюдал следующее поведение в python 3.4.2, и я не могу его объяснить. Надеюсь, кто-нибудь сможет пролить свет на этот вопрос:
В IPython:
In [129]: import urllib
In [130]: print(urllib.parse)
<module 'urllib.parse' from '/Users/ashwin/.pyenv/versions/3.4.2/lib/python3.4/urllib/parse.py'>
Я импортировал модуль и распечатал один из его атрибутов. Все работает так, как ожидалось. Пока что жизнь удалась.
Теперь я делаю то же самое из командной строки:
$ python -c 'import urllib; print(urllib.parse)'
Traceback (most recent call last):
File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute 'parse'
Чего-чего?! это не так, как это должно работать.
Хорошо, может быть, это поведение всего python; возможно, модули не сразу импортируются при использовании флага -c
. Попробуем другой модуль:
$ python -c 'import datetime; print(datetime.datetime)'
<class 'datetime.datetime'>
Какая?! Как это работает для datetime
, а не для urllib
? Я использую одну и ту же версию Python в обоих местах (3.4.2)
У кого-нибудь есть мысли по этому поводу?
ИЗМЕНИТЬ:
По одному из комментариев:
$ which -a ipython
/Users/ashwin/.pyenv/shims/ipython
/Library/Frameworks/Python.framework/Versions/2.7/bin/ipython
/usr/local/bin/ipython
/usr/local/bin/ipython
А также
$ which -a python
/Users/ashwin/.pyenv/shims/python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
/usr/bin/python
/usr/bin/python
which -a ipython
иwhich -a python
- person cel   schedule 19.10.2015python -m IPython -c 'import datetime; print(datetime.datetime)'
иpython -c 'import datetime; print(datetime.datetime)'
дают разные результаты? - person cel   schedule 19.10.2015python -c
сdatetime
дает другой результат, чемpython -c
сurllib
, в том смысле, что первый выдаетAttributeError
, а второй нет. Тем не менее, код сurllib
не вызывает ошибок при использовании в интерактивном IPython. - person inspectorG4dget   schedule 19.10.2015python -c 'import urllib; print(urllib.parse)'
иpython -m IPython -c 'import urllib; print(urllib.parse)'
дают разные результаты. Я тоже это вижу. Действительно, очень интересное наблюдение. Я бы добавил обычный тег python для повышения видимости. - person cel   schedule 19.10.2015urllib
не та? - person skyking   schedule 19.10.2015I'm using the same version of python in both places (3.4.2)
- person inspectorG4dget   schedule 19.10.2015