【发布时间】:2021-07-24 13:11:32
【问题描述】:
我希望以可移植的方式使用sysv_ipc 库。
我安装了它:
pip3 install sysv_ipc
然后来自 Python:
import sysv_ipc
sysv_ipc.__file__
# Output:
# /home/x/.local/lib/python3.9/site-packages/sysv_ipc.cpython-39-x86_64-linux-gnu.so
如果我将该文件复制到文件夹 pip uninstall 库中,然后从该文件夹打开 python 并尝试相同的导入,它会失败。
我尝试检查还安装了什么,发现:
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info
/home/x/.local/lib/python3.9/site-packages/sysv_ipc.cpython-39-x86_64-linux-gnu.so
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/INSTALLER
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/LICENSE
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/METADATA
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/RECORD
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/REQUESTED
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/WHEEL
/home/x/.local/lib/python3.9/site-packages/sysv_ipc-1.1.0.dist-info/top_level.txt
我也没有在setup.py里面找到线索。
我想弄清楚的是-
pip 如何/在哪里与要从该特定文件导入 sysv_ipc 的 Python 相关?
【问题讨论】:
-
我认为您真的在询问 Python 路径。无论是 c 扩展名还是 .py 文件都不会对答案产生太大影响。 (虽然我个人对细节没有足够的信心来给出一个好的答案)
-
如何导入失败,你把文件移到哪里了?
-
@MartijnPieters 我在文件的位置打开了一个 python 提示符。如果我将文件重命名为“sysv_ipc.so”,则导入有效,但不能使用原始名称(sysv_ipc.xx.yy..)。我认为 pip 以某种方式注入了“sysv_ipc”所指文件的知识
-
@Jay 那么您的 Python 版本与您安装 sysv_ipc 的版本不匹配。使用
pip -V和python -V检查您的版本。您删除了 ABI 标识符,但该模块是否实际运行取决于 Python C 在被要求执行工作时调用的内容。查看我更新的答案(我删除了我最初的错误猜测,我真的不应该在深夜完全在手机屏幕上写答案)。 -
@Jay 这也说明了为什么您需要共享您的代码和命令。如果您预先分享您运行的确切命令、输出是什么以及重命名文件会改变结果,我们可以帮助您并更好地理解您得出的(不正确的)结论。跨度>
标签: python-3.x pip python-import python-c-api python-internals