使用 pip install --upgrade 安装的模块。来自项目文件夹是可导入的,但子模块不是。
该模块具有以下结构:
mymodule
|- setup.py
|- mymodule
|- __init__.py
|- cli.py
|- submodule
|- __init__.py
|- parta.py
在 setup.py 文件中,我使用了带有 find_packages() 语法和手动包规范的 setuptools。两者产生相同的结果:
from setuptools import setup, find_packages
setup(
name='mymodule',
packages=find_packages(),
package_dir={'mymodule': 'mymodule'},
entry_points={'console_scripts': ['mymodule=mymodule.cli:main']},
include_package_data=True,
)
和
packages=['mymodule],
package_dir={'mymodule':'mymodule'},
尝试导入模块本身时,导入工作但子模块不可用:
from module
import module.submodule.parta
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'mymodule' has no attribute 'submodule'
同样地
from mymodule.submodule import parta
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'mymodule.submodule'
该PYTHONPATH
变量确实包含模块所在的目录(home/user/modules/mymodule/
):
printenv PYTHONPATH
/home/user/modules:
从那以后,我尝试将模块本身 ( home/user/modules/mymodule
) 添加到PYTHONPATH
其中,结果没有改变。
唯一可以无错误导入子模块的时间是 python 从/home/user/modules/mymodule
.
我错过了什么?setuptools 不应该找到并复制所有需要的文件吗?我正在使用 Python 3.5。