3

使用 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。

4

0 回答 0