Большая часть нашего текущего проекта сильно зависит от этого интегратора. Он написан на Cython, поэтому у меня есть несколько файлов с одинаковыми именами, например: "integrator.pyx", "integrator. cpp" и "integrator.hpp". Существует также файл «setup.py», который предназначен для цифонизации файла «integrator.pyx».
И все это работало нормально, когда все работало в Python 2.
Но сейчас мы пытаемся обновить данные до Python 3 (в частности, 3.4, если это имеет значение), и у нас возникают проблемы.
Многие мои файлы зависят от интегратора, поэтому большинство из них имеют :
from integrator import *
Это прекрасно работает в Python 2. Но если я запускаю те же файлы в Python 3 (я обычно работаю в ноутбуке Jupyter), я получаю ошибку :
ImportError: no module named 'integrator'
После долгих поисков я получил совет распечатать пути импорта для Python 2 и Python 3. Я обнаружил, что каталог '/ usr / local / lib / python2 .7 / dist-packages 'содержит файл с именем "integrator.so" и другой файл с именем "integrator-0.0.0.egg-info", оба из которых отсутствуют в / usr / local /lib/python3.4/dist-packages 'directory.
Когда я вызываю from integrator import *
, он вызывает файл .so или ссылается на один из. cpp или .hpp файлы в каталоге? Будет ли просто скопировать файл .so и / или файл .egg в справочную директорию 3.4?
Затем я попытался добавить точку в команду импорта:
from .integrator import *
, который возвращает ошибку:
SystemError: Parent module '' not loaded, cannot perform relative import
Я также попытался перекомпилировать файл "integrator.pyx" в Python 3.4, чтобы посмотреть, не создаст ли это новый кодированный код, совместимый с Python 3. Когда я пытаюсь это сделать, все, что я получаю, - это ошибка:
error: command 'gcc' failed with exit status 1
Я пытался найти это, но большая часть решения либо go над моей головой, либо не работают, либо у меня нет прав на внесение определенных изменений, так как я работаю удаленно на компьютере с общим доступом. Например, я попытался «импортировать pystan» в файле .pyx, но это приводит к
ImportError: no module named 'pystan'
даже после pip3 install --user pystan
Как я могу заставить эту работу в Python 3?