导入我自己的包时导入Python

时间:2016-12-20 18:12:29

标签: python python-3.x setuptools

我的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,代码终于正常工作。

现在我已在MySub.py中添加了另一个模块MyPackage/src/MyPackage,然后我已将其导入MyModule.pyfrom 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文件为空。

1 个答案:

答案 0 :(得分:1)

变化:

from datetime import datetime

dt = datetime.strptime('2016-06-01  1:33:45', '%Y-%m-%d  %H:%M:%S')
dt.strftime('%a %b %d %H:%M:%S %Y ')
>>> 'Wed Jun 01 01:33:45 2016'

为:

from MyPackage import module.py

from MyPackage import module 是Python模块的名称; module是文件本身的名称,不允许在import语句中使用。事实上,当您执行module.py时,Python导入系统将在import module.py中的名为py中查找对象,这不太可能是您真正想要的。有关详细信息,请参阅thisthis