具有以下模块布局:
/path/in/pythonpath/
mymodule/
__init__.py
_mymodule-cpython-37m-darwin.so
在Python 2.7中,_init__.py可以导入。如下所示:
import _mymodule
但在Python3.7中,我发现除非我将mymodule目录添加到PYTHONPATH中,否则找不到_mymodule:
PYTHONPATH=/path/in/pythonpath:/path/in/pythonpath/mymodule
我发现在系统上安装的类型化\u ast模块中使用了这种方法:
...site-packages/typed_ast/
__init__.py
ast3.py
_ast3.cpython-37m-darwin.so
其中ast3.py导入_ast3如下:
from typed_ast import _ast3
from typed_ast._ast3 import *
使用mymodule遵循此模型也可以工作,而无需修改PYTHONPATH:
from mymodule import _mymodule
from mymodule._mymodule import *
我的问题是什么改变了,“mymodule”的正确做法是什么?这个定义在哪里?我发现在PEPs或Python文档中没有明确介绍这一点。我怀疑这在一些模块文档中是隐含的,我错过了它
最初的问题陈述不正确
在Python 2.7中,我使用的模块有一个Python27目录,其中包含_mymodule.so:
它明确地将Python27添加到路径中。因此,Python3找不到模块也就不足为奇了,因为子目录被删除了,版本命名方案被应用于.So文件
至于两个import语句。这两个都不是必需的,除非您希望能够直接访问_mymodule函数以及前缀为_mymodule的函数。这通常是因为遗留的原因
我的问题的答案是:你问错了问题,因为你错误地描述了问题,你想要的是:
相关问题 更多 >
编程相关推荐