python库和模块的区别_Python动态库模块的名称与文件名不同
在Python中,模块的名称通常与相应文件的名称相同,但是我遇到了与模块无关的问题,事实并非如此:
1
2
3
4
5
6me@host:/usr/lib/python2.7/dist-packages/paraview$ ls vtkCommonCorePython*
vtkCommonCorePython.x86_64-linux-gnu.so
me@host:/usr/lib/python2.7/dist-packages/paraview$ python -c \
"import vtkCommonCorePython; print(vtkCommonCorePython.__file__)"
vtkCommonCorePython.x86_64-linux-gnu.so
它是如何工作的?
我的问题是我尝试将此模块与另一个Python(/opt/python/2.7.9/bin/python)一起使用,但找不到该模块:
1
2
3
4
5
6
7
8me@host:/usr/lib/python2.7/dist-packages/paraview$ module load python/2.7.9
--- Loading module environment: python/2.7.9
------------------------------------------------
me@host:/usr/lib/python2.7/dist-packages/paraview$ python -c \
"import vtkCommonCorePython; print(vtkCommonCorePython.__file__)"
Traceback (most recent call last):
File"", line 1, in
ImportError: No module named vtkCommonCorePython
注意:/usr/lib/python2.7/lib-dynload中的大多数文件也以x86_64-linux-gnu.so结尾,而/opt/python/2.7.9/lib/python2.7/lib-dynload中的文件仅以.so结尾。
更新后cdarke的答案:
cdarke提到了imp.get_suffixes函数,该函数返回带有后缀及其对Python含义的元组:
与/opt/python/2.7.9/bin/python
1[('.so', 'rb', 3), ('module.so', 'rb', 3), ('.py', 'U', 1), ('.pyc', 'rb', 2)]
和/ usr / lib / python
1[('.x86_64-linux-gnu.so', 'rb', 3), ('.so', 'rb', 3), ('module.so', 'rb', 3), ('.py', 'U', 1), ('.pyc', 'rb', 2)]
这种差异解释了为什么我得到此错误,但是似乎这些后缀没有在site.py中设置(如cdarke所写),并且没有函数imp.set_suffixes。
因此,要解决该问题,我需要知道如何设置这些后缀。
更新2
因此,似乎后缀已编码为二进制Python文件,这意味着在构建Python之后就无法对其进行修改。因此,解决该问题的最干净方法是重建opt Python,从而了解为configure提供哪些选项以获取Debian Jessie下的Python多体系结构作为Python系统。
Cdarke,非常感谢您的帮助。
请参阅:stackoverflow.com/questions/13495285/
.so文件当然也可以用C或C ++编写。在Python 2 API中,有一个入口点函数在其中命名模块,因此对于名为" example"的模块:
1
2
3
4PyMODINIT_FUNC initexample(void)
{
(void)Py_InitModule("example", ExampleMethods);
}
Py_InitModule的第二个参数是方法数组的名称-基本上是C函数名称的列表。 .so文件与Python27运行时库链接。
那么Python如何知道要使用哪些后缀?您可以使用以下方法找到这些:
1
2import imp
print imp.get_suffixes()
这将显示系统上模块的有效后缀(imp模块的文档具有指导意义)。
编辑:
在深入研究了源代码等之后,我发现了configure.ac中的相关行。在构建期间使用了两个宏,VERSION和SOVERSION。在我看来,差异是因为python是用不同的方式构建的。我认为答案是在每个平台上从源代码构建模块。
我提供的有关site.py的原始信息来自http://bioportal.weizmann.ac.il/course/python/PyMOTW/PyMOTW/docs/site/index.html,但我尚未对其进行测试。
有一个未公开的imputil.add_suffix()函数,但是显然不是设计用来由用户调用的。
感谢您的imp.get_suffixes()。 但是,似乎这些后缀未在site.py中设置...
@paugier:是的,您是对的,我的信息已经过时了。 我会追逐
python库和模块的区别_Python动态库模块的名称与文件名不同相关推荐
- 【转载】linux静态链接库与动态链接库的区别及动态库的创建
这篇文章对于动态库的概念及使用介绍的很不错,故收藏了. 一.引言 通常情况下,对函数库的链接是放在编译时期(compile time)完成的.所有相关的对象文件(object file)与牵涉到的函数 ...
- python post与get的区别_Python Requests库 Get和Post的区别和Http常见状态码
(1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2) GET方式提交的数据最多只能有1024 Byte,而P ...
- python中的numpy模块和pandas模块的区别_python的numpy模块- 01.pandas基本数据类型
01.pandas基本数据类型 import pandas as pd import numpy as np from pandas import Series,DataFrame 1. Series ...
- python动态导入模块_Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析...
本文实例讲述了Python动态导入模块:__import__.importlib.动态导入的使用场景.分享给大家供大家参考,具体如下: 相关内容: __import__ importlib 动态导入的 ...
- 头文件和库文件区别,动态库和静态库的区别,动静态库的生成
文章目录 一.什么是头文件?什么是库文件?有什么区别? 先说总结 目标文件 二.什么是静态库?什么是动态库?有什么区别? 三.为什么只用在程序头部写上包含的头文件,头文件中并没有实现内容就可以使用声明 ...
- 【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )
文章目录 I . CMake 引入动态库与静态库区别 II . Android Studio 中 CMake 引入动态库流程 III . 指定动态库查找路径 IV . 链接函数库 V . 完整代码示例 ...
- qt生成无ui界面动态库,有ui界面的动态库,以及含有资源文件和qss文件的动态库
提要 此文分别就qt生成纯代码的动态库,含有ui文件的动态库以及含有资源文件qss文件和切图的动态库. 实现 1.纯代码的生成qt库.即没有ui文件的项目. 打开QtCreate,新建文件,选择lib ...
- python什么模块动态调用链接库_python 动态调用模块、类、方法(django项目)
需求:近一段时间基于django框架,开发各业务层监控代码,每个业务的监控逻辑不同,因此需要开发监控子模块,动态的导入调用. 项目名称:demo_django App:common_base.moni ...
- python创建字典和包的区别_python之路—模块和包
一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...
最新文章
- 轉換--中文简繁体转换JS 代码
- 面试|图解kafka的高可用机制
- 如何真正提高ASP.NET网站的性能
- Linux系统下.ko文件是什么文件?.so文件是什么文件?
- php转化xml数组_PHP实现数组array转换成xml的方法
- android 渠道打包工具,Android渠道打包技术小结
- JSLint JavaScript代码质量审查工具汉化中文版隆重发布
- Linux中出现 -bash: unzip: command not found
- 2021年上半年软考真题网络工程师真题及答案解析
- Tomcat 下载安装教程
- 百度飞桨-基于CV的工业读表案例(修改读表范围和数值)
- 激活pytorch环境
- 动图静图怎么拼接在一起?教你一键快速拼接图片
- linux启动和关闭防火墙命令
- 英语听力,口语常见的三个简读/略读/变读
- Android RecyclerView数据错乱问题
- camera face
- VLC 媒体播放器将登陆 Apple TV
- 2021年通辽市高考成绩查询,2021年通辽高考状元名单公布 今年通辽高考状元是谁资料和分数...
- C/C++游戏开发:打造炫酷的3D跑酷游戏,小时候玩过的游戏还记得吗?
热门文章
- Go进程/线程/协程:单元 空间资源 切换 共享
- tp 查询3天内是否有记录_DNF:玩家哭诉没坐过飞机,被吧主实锤打脸,TP制裁强行背锅...
- 用图表说话 麦肯锡 pdf下载_揭秘麦肯锡顾问百万年薪背后的逻辑,麦肯锡「方法论」系列大合集...
- MySQL批量更改数据库表结构字符集
- python树结构_Python-简单的树结构实现
- java代码解锁华为_如何编写可怕的Java代码?
- netty依赖_高性能:《一遍文章带你看懂 Netty世界》
- nginx alias
- Eclipse中svn插件:Subclipse插件安装
- mysql command为sleep时项目可以连接_Mysql中Sleep进程连接数过多问题解决