setup.py 中 entry_points 的导入错误
ImportError for entry_points in setup.py
当我尝试调用在我的 setup.py
中定义的控制台脚本入口点时,我得到一个 ImportError: No module named 'test.nested'
。
项目结构:
test
├── setup.py
└── test
├── __init__.py
└── nested
├── __init__.py
└── testme.py
setup.py
:
from setuptools import setup, find_packages
setup(name='test',
version='0.1',
packages=find_packages(),
entry_points = {
'console_scripts': [
'testme=test.nested.testme:main'
]
},
zip_safe=False)
testme.py
:
def main():
print('It works!')
if __name__ == '__main__':
main()
但是,我得到这个错误:
> pip install .
Processing my_folders/test
Installing collected packages: test
Running setup.py install for test ... done
Successfully installed test-0.1
> testme
Traceback (most recent call last):
File "venv35/bin/testme", line 11, in <module>
load_entry_point('test==0.1', 'console_scripts', 'testme')()
File "venv35/lib/python3.5/site-packages/pkg_resources/__init__.py", line 560, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "venv35/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2648, in load_entry_point
return ep.load()
File "venv35/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2302, in load
return self.resolve()
File "venv35/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2308, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
ImportError: No module named 'test.nested'
这里可能是什么问题?
注意:在 python
shell 中,此代码有效:
>>> import test.nested.testme
>>> test.nested.testme.main()
It works!
好吧,显然我为我的包裹使用了一个错误的名字。事实上,将 test
重命名为 my_test
就解决了这个问题。
我希望这对其他人有用。
当我尝试调用在我的 setup.py
中定义的控制台脚本入口点时,我得到一个 ImportError: No module named 'test.nested'
。
项目结构:
test ├── setup.py └── test ├── __init__.py └── nested ├── __init__.py └── testme.py
setup.py
:from setuptools import setup, find_packages setup(name='test', version='0.1', packages=find_packages(), entry_points = { 'console_scripts': [ 'testme=test.nested.testme:main' ] }, zip_safe=False)
testme.py
:def main(): print('It works!') if __name__ == '__main__': main()
但是,我得到这个错误:
> pip install .
Processing my_folders/test
Installing collected packages: test
Running setup.py install for test ... done
Successfully installed test-0.1
> testme
Traceback (most recent call last):
File "venv35/bin/testme", line 11, in <module>
load_entry_point('test==0.1', 'console_scripts', 'testme')()
File "venv35/lib/python3.5/site-packages/pkg_resources/__init__.py", line 560, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "venv35/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2648, in load_entry_point
return ep.load()
File "venv35/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2302, in load
return self.resolve()
File "venv35/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2308, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
ImportError: No module named 'test.nested'
这里可能是什么问题?
注意:在 python
shell 中,此代码有效:
>>> import test.nested.testme
>>> test.nested.testme.main()
It works!
好吧,显然我为我的包裹使用了一个错误的名字。事实上,将 test
重命名为 my_test
就解决了这个问题。
我希望这对其他人有用。