设置工具:加载时导入错误项

2024-03-28 23:43:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在安装包时创建入口点。 这是我的包裹:

.
├── foo
│   ├── example.py
│   └── __init__.py
└── setup.py

我的设置.py是:

^{pr2}$

这是示例.py公司名称:

def main():
    print "hello world"

我是这样安装的:

python setup.py sdist
pip install dist/foo-1.1.1.tar.gz

它工作得很好。但是当我尝试使用入口点/usr/bin时/食品我得到了回溯:

Traceback (most recent call last):
  File "/usr/bin/foo.py", line 11, in <module>
    load_entry_point('foo==1.1.1', 'console_scripts', 'foo.py')()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 570, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2751, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2405, in load
    return self.resolve()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2411, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
ImportError: No module named example

在pythonshell中导入foo模块也很好。在


Tags: inpyfooinitlibpackagesusrline
1条回答
网友
1楼 · 发布于 2024-03-28 23:43:40

您将入口点脚本命名为foo.py。运行它时,foo从脚本导入任何导入。也就是说,您隐藏了您的包foo。脚本没有子模块example,因此出现错误。在

不要将脚本命名为foo.py,只需将其命名为foo

console_scripts = \
    ['foo = foo.example:main']

如果您需要.py扩展名,请将其命名为bar.py。这样它就不会隐藏包foo。在

相关问题 更多 >