Я использую сорока - многозначный классификатор на Tensorflow с Word2vec. Обучение отлично работает с Python 2.7, но с Python 3.x выдает эту ошибку ниже. Я использую Ubuntu 16.04.5 LTS, как ни странно, код Python 3.x отлично работает на другом компьютере с Ubuntu. Я обновил свои зависимости: word2vec, magpie, tf и не уверен, что может пойти не так.
/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
return f(*args, **kwds)
Using TensorFlow backend.
/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
return f(*args, **kwds)
/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
return f(*args, **kwds)
/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
return f(*args, **kwds)
/usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
return f(*args, **kwds)
Traceback (most recent call last):
File "train_magpie.py", line 1, in <module>
from magpie import Magpie
File "/usr/local/lib/python3.5/dist-packages/magpie/__init__.py", line 1, in <module>
from .main import Magpie
File "/usr/local/lib/python3.5/dist-packages/magpie/main.py", line 12, in <module>
from magpie.base.word2vec import train_word2vec, fit_scaler
File "/usr/local/lib/python3.5/dist-packages/magpie/base/word2vec.py", line 7, in <module>
from gensim.models import Word2Vec
File "/usr/local/lib/python3.5/dist-packages/gensim/__init__.py", line 6, in <module>
from gensim import parsing, matutils, interfaces, corpora, models, similarities, summarization
File "/usr/local/lib/python3.5/dist-packages/gensim/parsing/__init__.py", line 7, in <module>
from .preprocessing import *
File "/usr/local/lib/python3.5/dist-packages/gensim/parsing/preprocessing.py", line 10, in <module>
from gensim import utils
File "/usr/local/lib/python3.5/dist-packages/gensim/utils.py", line 50, in <module>
from smart_open import smart_open
File "/usr/local/lib/python3.5/dist-packages/smart_open/__init__.py", line 1, in <module>
from .smart_open_lib import *
File "/usr/local/lib/python3.5/dist-packages/smart_open/smart_open_lib.py", line 45, in <module>
from boto.compat import BytesIO, urlsplit, six
File "/usr/lib/python3/dist-packages/boto/__init__.py", line 1216, in <module>
boto.plugin.load_plugins(config)
File "/usr/lib/python3/dist-packages/boto/plugin.py", line 92, in load_plugins
for file in glob.glob(os.path.join(directory, '*.py')):
File "/usr/lib/python3.5/posixpath.py", line 89, in join
genericpath._check_arg_types('join', a, *p)
File "/usr/lib/python3.5/genericpath.py", line 143, in _check_arg_types
(funcname, s.__class__.__name__)) from None
TypeError: join() argument must be str or bytes, not 'NoneType'
попробуйте поймать исключение.
@holler Это явно не в коде OP, а в boto/plugin.py
, так что это не очень полезно.
Проблема может быть в мусоре в вашем каталоге плагинов Boto и / или config. Вы устанавливали какие-либо плагины или редактировали конфигурацию Boto?
ааа, вот и все. Я переустановил плагины Boto и это исправило. Уф! Спасибо @abarnert. вы можете написать в качестве ответа?
@ Сантино Хорошо, готово.
Исключение составляет boto/plugin.py
. По какой-то причине он получает None
вместо строки для имени некоторого каталога, а затем пытается скопировать все файлы в None
, что терпит неудачу, потому что вы не можете os.path.join
шаблон глобуса для None
.
Итак, почему он это делает?
Скорее всего, в вашем каталоге плагинов Boto есть какой-то мусор. Или, если его нет, в вашем config. (Было бы неплохо, если бы у boto была лучшая обработка ошибок для этого случая, но, вероятно, это происходит не так часто ...)
Есть хороший шанс, что просто удалите и переустановите плагины Boto, чтобы исправить это.
Для тех, кто читает это в будущем:
Если ваше исключение заканчивается этим (кроме, возможно, других номеров строк и номеров версий):
File "/usr/lib/python3/dist-packages/boto/__init__.py", line 1216, in <module>
boto.plugin.load_plugins(config)
File "/usr/lib/python3/dist-packages/boto/plugin.py", line 92, in load_plugins
for file in glob.glob(os.path.join(directory, '*.py')):
File "/usr/lib/python3.5/posixpath.py", line 89, in join
genericpath._check_arg_types('join', a, *p)
File "/usr/lib/python3.5/genericpath.py", line 143, in _check_arg_types
(funcname, s.__class__.__name__)) from None
TypeError: join() argument must be str or bytes, not 'NoneType'
… Это та же ошибка. Но если переустановка ваших плагинов Boto не помогает, вам нужно создать новый вопрос. (И включите результаты вызова find
или tree
в каталог ваших плагинов, а также содержимое вашего файла конфигурации и все соответствующие номера версий.)
Вероятно, в вашем коде есть неожиданный побочный эффект, когда переменная, которую вы передаете функции
join()
, имеет значениеNone
. Вы можете решить эту проблему, проверив, не является ли значение этой переменнойNone
, как это:if x is not None:
, и только затем запустив методjoin()
.