【问题标题】:Python import problems when importing my own package [duplicate]导入我自己的包时的Python导入问题[重复]
【发布时间】:2016-12-20 18:12:28
【问题描述】:

我的 PyCharm 项目的结构是这样的:

 MyPrj
 |_ src
    |_ main.py       

 MyPackage
 |_ src
 |  |_ MyPackage
 |     |_ __init__.py
 |     |_ MyModule.py
 |_ setup.py 

main.py 中,我添加了这一行:from MyPackage import MyModule。 我使用 anaconda3 (~/anaconda3/bin/pip install .) 成功安装了这个模块。在遇到一些关于找不到MyPackage的问题后,我重新安装了anaconda3,代码终于可以工作了。

现在我在MyPackage/src/MyPackage 中添加了另一个模块MySub.py,然后我在MyModule.py 中导入了它(from MySub import sub,其中sub 是在MySub.py 中正确定义的类)。在 anaconda3 中升级我的包后,当我尝试运行 main.py 时出现以下错误:ImportError: No module named 'sub1',但是如果我查看 anaconda3 的 site-packages 文件夹,MySub.py 存在。如何解决这个问题?

这是我的setup.py 文件:

import os
from setuptools import setup


def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()


setup(
    name='MyPackage',
    version='0.1',
    description='my description',
    long_description=read('README.txt'),
    packages=['MyPackage'],
    package_dir={'MyPackage': 'src/MyPackage'},
    zip_safe=False
)

我的__init__.py 文件为空。

【问题讨论】:

  • 您是否真的在您的import 语句中添加了.py
  • 抱歉打错了,我更正了
  • 我们需要看到一个真实的minimal reproducible example,而不是几行记错的导入和目录树。
  • @user2357112 我提供了更多信息并添加了setup.py 文件。如果需要其他信息,请告诉我。

标签: python python-3.x setuptools


【解决方案1】:

变化:

from MyPackage import module.py

到:

from MyPackage import module

module 是 Python 模块的名称; module.py 是文件本身的名称,不允许在导入语句中使用。实际上,当您执行import module.py 时,Python 导入系统会在module 中查找名为py 的对象,这不太可能是您真正想要的。请参阅thisthis 了解更多详情。

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2016-05-11
    • 2012-11-02
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多