#python #makefile #conda #urllib
#python #makefile #conda #urllib
Вопрос:
Сначала это казалось типичной ошибкой python2-> 3, но я не смог понять, что здесь может быть не так. Возможно, это связано с конфликтом между conda
и makefile .
По-моему makefile
, у меня есть правило:
update_stuff:
python --version
which python
python stuff.py
который выводит
python --version
Python 3.8.3
which python
/Users/username/anaconda3/bin/python
...
затем в моем скрипте на python у меня есть эти соответствующие строки:
import urllib
import sys
print(sys.version)
print(sys.executable)
req = urllib.request.Request(URL)
какой вывод выводится первым
3.8.3 (default, Jul 2 2020, 11:26:31)
[Clang 10.0.0 ]
/Users/user/anaconda3/bin/python
но затем выдает ошибку
File "stuff.py", line 278, in <module>
req = urllib.request.Request(URL)
AttributeError: module 'urllib' has no attribute 'request'
make: *** [update_stuff] Error 1
Если я просто запускаю файл из командной строки с python stuff.py
помощью, он работает нормально, и я не вижу, где может быть вызвана версия python, которая не знает urllib
. Запуск make SHELL=/bin/bash
ничего не меняет. Есть какие-либо указания на то, как это исправить?
Комментарии:
1. Кроме того, используете ли вы для этого базовую / корневую среду Conda?
2. да, это так. Я думаю, что это работало раньше, так что, возможно, это было вызвано каким-то обновлением от 3.? до 3.8, когда я переустановил anaconda
3. да, это так. Будьте осторожны, это может легко привести к некоторым проблемам. Лучше всего создать новую среду для каждого проекта.
Ответ №1:
Вам нужно указать импорт:
import urllib.request
https://docs.python.org/3.8/library/urllib.request.html#module-urllib.request