【问题标题】:ImportError: module 'main' has no attribute '__main__' after doing pip -eImportError:模块'main'在执行 pip -e 后没有属性'__main__'
【发布时间】:2017-10-26 04:02:00
【问题描述】:

鉴于这两个文件:

setup.py:

from setuptools import setup, find_packages

setup(name='mcve',
      version='0.0.1',
      description='',
      long_description=(''),
      author='BPL',
      author_email='',
      entry_points={
          'console_scripts': ['mcve = main:__main__']
      },
      packages=[],
      license='MIT')

ma​​in.py:

if __name__ == "__main__":
    print('running the mcve...')

在做pip -e .之后,下一个文件将被安装到我的python virtual env 3.6.2/win7中:

d:\virtual_envs\py362_32\lib\site-packages\mcve.egg-link
d:\virtual_envs\py362_32\scripts\mcve-script.py
d:\virtual_envs\py362_32\scripts\mcve.exe
d:\virtual_envs\py362_32\scripts\mcve.exe.manifest

当我尝试运行mcve.exe时出现问题,我会得到下一个回溯:

Traceback (most recent call last):
  File "d:\virtual_envs\py362_32\lib\site-packages\pkg_resources\__init__.py", line 2413, in resolve
    return functools.reduce(getattr, self.attrs, module)
AttributeError: module 'main' has no attribute '__main__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\virtual_envs\py362_32\Scripts\mcve-script.py", line 11, in <module>
    load_entry_point('mcve', 'console_scripts', 'mcve')()
  File "d:\virtual_envs\py362_32\lib\site-packages\pkg_resources\__init__.py", line 570, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "d:\virtual_envs\py362_32\lib\site-packages\pkg_resources\__init__.py", line 2751, in load_entry_point
    return ep.load()
  File "d:\virtual_envs\py362_32\lib\site-packages\pkg_resources\__init__.py", line 2405, in load
    return self.resolve()
  File "d:\virtual_envs\py362_32\lib\site-packages\pkg_resources\__init__.py", line 2415, in resolve
    raise ImportError(str(exc))
ImportError: module 'main' has no attribute '__main__'

另外,不确定是否值得一提,但是 python 我让我的 python 文件被 St 打开,即:

>assoc .py
.py=Python.File

>ftype Python.File
Python.File="d:\software\SublimeText3_x64\sublime_text.exe %1" %*

我想这不是问题......所以......我的 setup.py 一定有问题,我该如何解决这个错误?我试图将所有内容放在一个包中并以这种方式引用它,但也没有运气:/

提前致谢。

【问题讨论】:

    标签: python pip python-3.6 entry-point


    【解决方案1】:

    如果你想使用entry_points,你需要提供一个函数。您指定了一个名为 __main__ 的函数,但没有提供它。

    如果你想使用入口点,你应该选择一个更好的函数名,并在那里执行你的逻辑而不是顶级if __name__ == "__main__":

    【讨论】:

      猜你喜欢
      • 2017-09-09
      • 2019-09-14
      • 2022-11-19
      • 2015-07-03
      • 2017-12-19
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多