Python импортирует разные библиотеки из разных версий

Я пытаюсь разработать скрипт Python, и, похоже, у меня конфликт между двумя библиотеками, которые я хочу включить.

Первая зависимость, которая у меня есть, это pymoos (https://github.com/msis/python-moos), который необходим для подключения к моей коммуникационной архитектуре. Я создал код и вручную установил полученный pymoos.so в следующих местах:

  • /usr/lib/python3.6/сайт-пакеты/pymoos.so
  • /usr/lib64/python2.7/lib-dynload/pymoos.so
  • /usr/lib64/python3.6/lib-dynload/pymoos.so
  • /usr/local/lib/python3.7/lib-dynload/pymoos.so

Однако только python2.7 позволит мне «импортировать pymoos» из интерпретатора. Попытка из любой из версий Python3 приводит к следующему:

Python 3.6.8 (default, Jun 11 2019, 15:15:01) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymoos
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dynamic module does not define module export function (PyInit_pymoos)

Вторая зависимость — pydantic, которую мне удалось установить только с помощью pip3, по-видимому, это означает, что она доступна только в любой из установленных версий Python3. Попытка импорта из Python2 дает следующее:

Python 2.7.5 (default, Jun 11 2019, 14:33:56) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pydantic
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named pydantic

Поскольку я знаю, где находится библиотека pymoos.so, я думаю, что мой самый простой путь вперед — поместить ее в нужное место, чтобы она работала с python3, но я не могу найти нужное место!


person Andrew Bouchard    schedule 10.10.2019    source источник
comment
Moos говорит, что поддерживает python 3, поэтому попробуйте установить его с помощью pip3. Pydantic определенно работает только с python ›=3.6.   -  person SColvin    schedule 11.10.2019
comment
Это интересная идея — я знаю, что pymoos нет в репозиториях pip, поэтому я ищу, как я могу использовать pip3 для установки из исходного кода, который я скачал с github, который генерирует общую библиотеку объектов с помощью cmake. Есть ли у вас какие-либо советы о том, как это сделать? Последние несколько лет я довольно много инвестировал в C++, поэтому я немного заржавел в настройке Python и установке пакетов. Спасибо еще раз!   -  person Andrew Bouchard    schedule 11.10.2019
comment
она должна быть такой же простой, как pip install path/to/pymoos/code, но вам может быть лучше использовать более широко используемую библиотеку баз данных, такую ​​как asyncpg или psycopg.   -  person SColvin    schedule 15.10.2019
comment
Спасибо за помощь - вы направили меня точно по кроличьей тропе. Я не мог так просто установить с помощью pip, но я смог использовать включенный setup.py для создания файла колеса, а затем установить его с помощью pip. Две соответствующие команды были: sudo python3.7 setup.py bdist_wheel и sudo pip3 install dist/pymoos-0.0.1-cp37-cp37m-linux_x86_64.whl На одном компьютере все работало нормально, у меня возникла новая проблема с другим, где мне сказали, что этот и другие файлы .whl не поддерживаются колесом на этой платформе. Так что я отслеживаю это.   -  person Andrew Bouchard    schedule 15.10.2019
comment
@SColvin: я хотел бы отдать вам должное за решение. Есть ли способ сделать это с помощью комментария или не могли бы вы опубликовать решение, чтобы я мог его одобрить? Спасибо!   -  person Andrew Bouchard    schedule 15.10.2019
comment
Я скопировал свое предложение в ответ (хотя и не идеальный), вы можете проголосовать за него и пометить как принятое.   -  person SColvin    schedule 16.10.2019


Ответы (1)


согласно моему комментарию:

она должна быть такой же простой, как pip install path/to/pymoos/code, но вам может быть лучше использовать более широко используемую библиотеку баз данных, такую ​​как asyncpg или psycopg.

Что касается необходимости использовать sudo, вы можете рассмотреть возможность использования virtualenv или аналогичного, чтобы настроить выделенную среду Python для вашего приложения.

person SColvin    schedule 16.10.2019