Pyspark - Ошибка при импорте модуля внутри zip-файла - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь импортировать модуль cytoolz в свой скрипт pyspark.Модуль заархивирован в файле libs.zip, где находятся все мои требования.Я получаю сообщение об ошибке:

>>> import libs.cytoolz
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/dist/libs.zip/libs/cytoolz/__init__.py", line 1, in <module>
ImportError: No module named 'libs.cytoolz.itertoolz'

Я довольно новичок в Python и PySpark, поэтому я немного растерялся, как подойти к этому решению, так как похоже, что это проблема с тем, как__init__.py файл записан?

Что я могу сделать, чтобы мои требования были заархивированы одинаково и в то же время, чтобы мой скрипт мог их импортировать?

Редактировать Кстати, для этого я использую Python3.

Edit # 2

С тех пор я узнал, что cytoolz - это модуль Cython, для которого нужно, чтобы Cython былустановлен.Я установил его, и я также тестирую, импортировав pyximport и установив его сначала, прежде чем пытаться импортировать cytoolz, но не повезло.Вот как я начинаю свой REPL:

PYTHONPATH=$PWD/libs.zip/libs:$PWD/libs.zip/libs/cytoolz pyspark

И затем, внутри него, это то, что я делаю:

>>> import pyximport; pyximport.install()
(None, <pyximport.pyximport.PyxImporter object at 0x7f74441f7b00>)
>>> import cytoolz
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/folder/dist/libs.zip/libs/cytoolz/__init__.py", line 1, in <module>
ImportError: No module named 'cytoolz.itertoolz'

Как вы можете видеть, этоне может найти модуль itertoolz, который правильно расположен (это файл с именем itertoolz.pyx внутри папки cytoolz).

...