Python从不同版本导入不同的库

标签 python python-3.x python-2.7 pydantic

我正在尝试开发一个 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 导入会出现以下结果:

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 一起使用,但我似乎找不到正确的位置!

最佳答案

根据我的评论:

它应该像pip install path/to/pymoos/code一样简单,但您最好使用更广泛使用的数据库库,例如 asyncpg 或 psycopg。

关于必须使用 sudo,您可以考虑使用 virtualenv 或类似的方法为您的应用程序设置专用的 Python 环境。

关于Python从不同版本导入不同的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330446/

相关文章:

python-3.x - 有效删除 Python 中的连续对重复项?

python-3.x - ValueError : character U+6573552f. .. Py2aap

python - 解压 IEEE 754 float

python - 来自其他 IP 而不是本地主机的请求在长时间等待时没有响应

python - 是否可以并行化 bz2 的解压?

python - Python 的内置 __build_class__ 有什么作用?

python - 为什么在存储 fetchone() 值时显示 TypeError?

Python 主机名解析非常慢

python - 如何在 Pandas 中的 "day period"上覆盖数据以进行绘图

python - Selenium 在等待元素后卡住(Python)