Python импортирует разные библиотеки из разных версий - PullRequest
1 голос
/ 10 октября 2019

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

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

  • / usr / lib / python3.6/site-packages/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 giВот следующее:

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, но я не могукажется, найти правильное место!

1 Ответ

1 голос
/ 16 октября 2019

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

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

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

...