【问题标题】:Module not found after setuptoolssetuptools 后找不到模块
【发布时间】:2020-01-02 01:26:03
【问题描述】:

我在下面有一个 setup.py 文件,我

maindir
   |- setup.py
   |-src
         |- __init__.py
         |- pipeline.py
         |- parameter.py

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()

setuptools.setup(
    classifiers=[
        'Programming Language :: Python',
        'Development Status :: 4 - Beta',
        'Environment :: Console',
        'Intended Audience :: Science/Research',
        'License :: OSI Approved :: GNU General Public License (GPL)'
    ],  
    packages=setuptools.find_packages(),
    license='LICENSE.txt',
    long_description=open('README.md').read(),
    entry_points={'console_scripts': ['step1 = src.pipeline:step1']}
)

pipeline.py 顶部有 import parameter

我跑了python setup.py install,但后来它说找不到模块parameter.py。因此,我没有使用packages = find_packages(),而是使用packages=['src/parameter','src'],但是我必须将import parameter更改为import src.parameter。有没有办法避免这种情况?

【问题讨论】:

    标签: python python-3.x setuptools


    【解决方案1】:

    src 下没有任何包,所以find_packages() 找不到任何包。将'src/parameter' 列为一个包是没有意义的,因为它不是一个包(带有文件__init__.py 的目录),它是一个模块。这里只有 'src' 是一个包。

    我必须将import parameter 更改为import src.parameter

    Python 3,我猜? Python 3 更喜欢绝对导入,但允许相对导入。所以要么使用import src.parameter 要么使用import .parameter

    import parameter 在 Python 3 中是绝对导入(在 Python 2 中是相对+绝对导入),即 Python 搜索 sys.path 以查找 parameter 并失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2010-12-31
      • 1970-01-01
      • 2015-08-24
      • 2021-04-04
      相关资源
      最近更新 更多