【发布时间】:2019-10-10 20:13:01
【问题描述】:
我正在尝试开发一个 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 一起使用,但我似乎找不到正确的位置!
【问题讨论】:
-
Moos 说它支持 python 3,所以尝试使用 pip3 安装它。 Pydantic 绝对只适用于 python >=3.6。
-
这是一个有趣的想法 - 我知道 pymoos 不在 pip 存储库中,所以我正在研究如何使用 pip3 从我从 github 下载的源安装,这会生成一个使用 cmake 的共享对象库。你对如何做到这一点有任何提示吗?在过去的几年里,我在 C++ 上投入了大量资金,所以我对 Python 配置和包安装有点生疏。再次感谢!
-
它应该像
pip install path/to/pymoos/code一样简单,但最好使用更广泛使用的数据库库,如 asyncpg 或 psycopg。 -
感谢您的帮助 - 您让我找到了正确的兔子踪迹。我不能简单地用 pip 安装,但是我可以使用包含的 setup.py 生成一个 wheel 文件,然后用 pip 安装它。两个相关命令是:
sudo python3.7 setup.py bdist_wheel和sudo pip3 install dist/pymoos-0.0.1-cp37-cp37m-linux_x86_64.whl它在一台计算机上运行得很好,我在另一台计算机上遇到了一个新问题,它告诉我这个和其他 .whl 文件“不是这个支持的轮子平台。”所以我正在追踪它。 -
@SColvin:我想感谢您的解决方案。有没有办法通过评论来做到这一点,或者您能否将其作为解决方案发布以便我批准?谢谢!
标签: python python-3.x python-2.7 pydantic